![]() |
![]() |
![]() |
|
Ado, SQL, параметризованный запрос, как заполнить параметр? | ☑ | ||
---|---|---|---|---|
0
NcSteel
30.05.11
✎
13:55
|
СтрокаЗапроса = "select * from table Where parametr = @parametr";
Command.CommandText = СтрокаЗапроса; SqlParameters = Command.Parameters.refresh(); |
|||
1
Жан Пердежон
30.05.11
✎
13:55
|
мде
|
|||
2
NcSteel
30.05.11
✎
13:56
|
(0) + Вроде как refresh должен обновить параметры , судя по МСДН
|
|||
3
NcSteel
30.05.11
✎
13:56
|
(1) Куды капать ?
|
|||
4
NcSteel
30.05.11
✎
13:56
|
(2) +
Using the Refresh method on a Command object's Parameters collection retrieves provider parameter information for the stored procedure or parameterized query specified in the Command object. |
|||
5
NcSteel
30.05.11
✎
13:57
|
(4) + "parameterized query" не мой случай (1) ??
|
|||
6
ado
30.05.11
✎
13:58
|
||||
7
marty0701
30.05.11
✎
14:04
|
(0) А CreateParametr и Append не подходят? я просто понят не могу, что значит заполнить параметр? Выполнить нужно запрос с параметрами?
|
|||
8
NcSteel
30.05.11
✎
14:21
|
(7) Агу.
|
|||
9
Ёпрст
гуру
30.05.11
✎
14:22
|
а обязательно именно адо юзать ?
|
|||
10
smaharbA
30.05.11
✎
14:24
|
Команда.CommandText=Стр;
Параметры.Append(Команда.CreateParameter(,3,1,4,Кол)); //Параметры.Append(Команда.CreateParameter(,129,1,6,ВидИД)); //Параметры.Append(Команда.CreateParameter(,129,1,6,ДокИД)); Параметры.Append(Команда.CreateParameter(,3,1,4,ВидИД)); Параметры.Append(Команда.CreateParameter(,3,1,4,ДокИД)); Параметры.Append(Команда.CreateParameter(,129,1,23,ДатаНач)); Параметры.Append(Команда.CreateParameter(,129,1,23,ДатаКон)); Параметры.Append(Команда.CreateParameter(,200,1,255,Виды)); Параметры.Append(Команда.CreateParameter(,3,1,4,Реж)); Сообщить("Запрос подготовлен"); Иначе Параметры.Item(0).Value=Кол; Параметры.Item(1).Value=ВидИД; Параметры.Item(2).Value=ДокИД; Параметры.Item(3).Value=ДатаНач; Параметры.Item(4).Value=ДатаКон; Параметры.Item(5).Value=Виды; Параметры.Item(6).Value=Реж; КонецЕсли; |
|||
11
marty0701
30.05.11
✎
14:25
|
http://www.1c sql.ru/materials/articles/develop.html~bfd0f58f-25af-add2-6767-09a5bf664605
Надеюсь не забанят, там вполне доступно описано все, что вам требуется. |
|||
12
smaharbA
30.05.11
✎
14:25
|
параметры вопросом в порядке либо в строке параметров по сабаке
|
|||
13
NcSteel
30.05.11
✎
14:32
|
(9) Нет необязательно. Получать данные не буду , необходимо выполнить скрипт с БД (insert, update)
|
|||
14
NcSteel
30.05.11
✎
14:33
|
(12) А нельзя ли именовать параметр? Например @parametr1, @parametr2?
|
|||
15
Ёпрст
гуру
30.05.11
✎
14:34
|
(13)дык проще через вк делать, чем через адо, если это в 1с-ине выполнятся будет..
|
|||
16
marty0701
30.05.11
✎
14:34
|
(14)CreateParameter (name,type,direction,size,value)
1ый параметр. Окай. |
|||
17
NcSteel
30.05.11
✎
14:36
|
(15) Да в 1с-ине , но с вк не дружу. С начала скуль подучу , потом и до C# оберусь
|
|||
18
Ёпрст
гуру
30.05.11
✎
14:37
|
(17) дык проще тогда через 1cpp всё слепить.
|
|||
19
NcSteel
30.05.11
✎
14:38
|
Соединение = Соединиться(СтрокаПодключения);
СтрокаЗапроса = "select * from Abonent Where k_abon = @k_abon"; Command = Соединение[3]; RecordSet = Соединение[4]; Command.CommandText = СтрокаЗапроса; prm1 = Command.CreateParameter("@k_abon", КонстантаАДО("adWChar"), ТипПараметраАДО("adParamInput"), 9, 9); Command.Parameters.Append( prm1 ); RecordSet = Command.Execute(); Ошибка: select * from Abonent Where k_abon = @k_abon // {Форма.Форма.Форма(29)}: Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the scalar variable "@k_abon". |
|||
20
NcSteel
30.05.11
✎
14:38
|
(18) Ща прикинем .
|
|||
21
marty0701
30.05.11
✎
14:52
|
(19) adWChar 130 A null-terminated Unicode character string. - Похоже на число?
http://www.w3 schools.com/ado/met_comm_createparameter.asp Параметры расписаны. |
|||
22
smaharbA
30.05.11
✎
14:54
|
в имени параметра не нужна собака когда его создаешь, можно просче, в запросе типа
|SET @ВидИД=RIGHT(dbo._IdToStr(?),4) |SET @ДокИД=dbo._IdToStr(?) |SET @ДатаНач=? |SET @ДатаКон=? |SET @Виды=REPLACE(REPLACE(?,' ',''),CHAR(9),'') |SET @РежимОтбора=? |SET @Режим=ABS(@РежимОтбора) |SET @КоличествоАбсолютное=ABS(@Количество) |
|||
23
NcSteel
30.05.11
✎
15:02
|
(22) Получается именовать параметр нельзя. Параметры определяются через порядок появления в скрипте.
|
|||
24
NcSteel
30.05.11
✎
15:03
|
(21) Если
СтрокаЗапроса = "select * from Abonent Where k_abon = ?"; и prm1 = Command.CreateParameter(, КонстантаАДО("adWChar"), ТипПараметраАДО("adParamInput"), 9, 9); То отрабатывает без ошибки . Но имя параметра не задается и Объектной структуры нет. |
|||
25
NcSteel
30.05.11
✎
15:08
|
Еще вопрос , как я понимаю четвертый параметр функции CreateParameter() это выделяемая память. размер зависит от передаваемого параметра ? Тоесть для int или image разный размер необходимо ставить ?
|
|||
26
NcSteel
30.05.11
✎
15:15
|
СтрокаЗапроса = "
|declare @k_abon as int |set @k_abon = ? |select * from Abonent Where k_abon = @k_abon"; Command = Соединение[3]; RecordSet = Соединение[4]; Command.CommandText = СтрокаЗапроса; prm1 = Command.CreateParameter(, КонстантаАДО("adInteger"), ТипПараметраАДО("adParamInput"), , 8); Command.Parameters.Append( prm1 ); RecordSet = Command.Execute(); Так отработало. |
|||
27
КонецЦикла
30.05.11
✎
15:22
|
Типизировать тоже сам будешь если придется не абонентов вызывать а, к примеру, контрагентов? :)
Нафига этот гимор? Можно пробежать по диагонали десяток страниц и юзать нормальные инструменты |
|||
28
NcSteel
30.05.11
✎
15:43
|
(27) Например какой инструмент?
Уже гемор почти написал . |
|||
29
smaharbA
30.05.11
✎
16:03
|
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |