|
1С проблема с запросом к написанной функции SQL с параметрами |
☑ |
0
olo_lo1
21.01.19
✎
11:09
|
если запрос пишу вот так
Command.CommandText = ("Select [dbo].[ProductID](?,?)") а далее передаю параметры то запрос отрабатывает но на рекордсете нет нужных полей ..
если пишу так
Command.CommandText = ("Select * from [dbo].[ProductID](?,?)") то пишет ошибку [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'dbo.ProductID'.
Уже 3 часа бьюсь (((
|
|
1
youalex
21.01.19
✎
11:11
|
Если не принципиально, вставляй значения параметров литералами прямо в текст запроса.
|
|
2
olo_lo1
21.01.19
✎
11:13
|
(1) а как это поможет и как вставить ?
|
|
3
youalex
21.01.19
✎
11:15
|
(2) какие у тебя параметры? и текст запроса (можно фрагмент) с ними
|
|
4
olo_lo1
21.01.19
✎
11:22
|
Соединение = SQLServer.Подключиться();
Command = Новый COMОбъект("ADODB.Command");
RS = Новый COMОбъект("ADODB.RecordSet");
Command.ActiveConnection = Соединение;
Command.CommandType = 8;
Command.NamedParameters = True;
//Command.CommandText = ("Select [dbo].[ProductID](?,?)");
Command.CommandText = ("Select * from [dbo].[ProductID](?,?)");
Парам = Новый COMОбъект("ADODB.Parameter");
Парам.Name = "@Barcode";
Парам.Direction = 1; //1 - adParamInput
Парам.Type = 201; //
Парам.Size = 40;
Парам.Value = "22663484730011"; //пример штрихкода
Command.Parameters.Append(Парам);
Парам = Новый COMОбъект("ADODB.Parameter");
Парам.Name = "@DepositorID";
Парам.Direction = 1; //1 - adParamInput
Парам.Type = 3; //
Парам.Size = 99999;
Парам.Value = 32;// пример
Command.Parameters.Append(Парам);
Состояние ("Выполнение запроса SQL...");
RS = Command.Execute();
Пока НЕ RS.EOF() Цикл
prd_ID = RS.Fields("prd_ID").Value;
RS.MoveNext();
КонецЦикла;
|
|
5
ДенисЧ
21.01.19
✎
11:25
|
(4) А в RS.Fields какие колонки присутствуют по результату?
|
|
6
olo_lo1
21.01.19
✎
11:29
|
(5) если выполнять по первому варианту без полей то вот
|
|
7
ДенисЧ
21.01.19
✎
11:47
|
(6) это Select * ?
Видишь, там нет prd_Id...
|
|
8
youalex
21.01.19
✎
11:50
|
(4)
Не понял сразу, что у тебя функция.
"Select [dbo].[ProductID]('22663484730011',1)" - это чтобы не заворачиваться с параметрами ADO.
Если функция скалярная (возвращает одно значение), то можно задать псевдоним этого поля в резалте, например как
"Select [dbo].[ProductID]('22663484730011',1) id"
|
|
9
olo_lo1
21.01.19
✎
12:03
|
(8) БРАВО!!! Спасибо!!!!
|
|