|
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
|
||||
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) БРАВО!!! Спасибо!!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |