![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подстановка параметров в TQuery [D6, D7, MSSQL]
Быстрый Шу © (2006-06-06 10:11:00)Добрый день!
вообщем задача такова:
Query1.SQL.Text:='SELECT * FROM HOUSES WHERE ID_HOUSE = :Id_House';
Query1.ParamByName('HOUSES').AsInteger:=2595;
получается в итоге запрос вида:
SELECT * FROM HOUSES WHERE ID_HOUSE = 2595
это работает....
===
а вот если я хочу получить запрос вида:
SELECT * FROM HOUSES WHERE ID_HOUSE IN (2595, 2596, 2597)
Что мне для этого нужно подставить в параметр :ID_HOUSE?
Ega23 (2006-06-06 10:24:00) [21]
'Select ObjID from ObjectClasses where objid in ()'
Если так напишешь, то получишь ошибкуIncorrect syntax near ')'.
А если так
'Select ObjID from ObjectClasses where objid in ( -1)'
то получишь пустую выборку.
Чуешь разницу? :о)
Быстрый Шу (2006-06-06 10:21:00) [22]хм...у меня текст квери создаётся в процессе...и не мной, мне отдаётся на изменение только параметр...я могу только заранее "попросить" в каком виде запрос сделать..к чему я это говорю - обязательно значение по умолчанию ставить?
Ega23 (2006-06-06 10:19:00) [23]
> а в :HOUSE_PARAM уже как строку передавать '2595, 2596,
> 2597'
Можно и так. Ну тогда по-умолчанию '-1' параметр поставь.
Быстрый Шу (2006-06-06 10:17:00) [24]хм...а можно так?:
SELECT * FROM HOUSES WHERE ID_HOUSE IN (:HOUSE_PARAM)
а в :HOUSE_PARAM уже как строку передавать '2595, 2596, 2597'
Ega23 (2006-06-06 10:17:00) [25]
> а потом заполнять Query1.ParamByName('HOUSES').AsString:
> ='ID_HOUSE IN (2595, 2596, 2597)';
>
uery1.ParamByName( 'HOUSE_PARAM').AsString:='ID_HOUSE IN (2595, 2596, 2597)';
Я тоже опечатался...
Быстрый Шу (2006-06-06 10:15:00) [26]вообщем извините за сумбурность, очень спешу, да и голова уже объята пламенем....)))
Ega23 (2006-06-06 10:14:00) [27]
> Что мне для этого нужно подставить в параметр :ID_HOUSE?
Для этого тебе надо ввесьт текст запроса
SELECT * FROM HOUSES WHERE :HOUSE_PARAM
определить параметр как string, поставить его равным по-умолчанию '0=0',
а потом заполнять Query1.ParamByName('HOUSES').AsString:='ID_HOUSE IN (2595, 2596, 2597)';
Быстрый Шу (2006-06-06 10:14:00) [28]упс, обшибся,
здесь
Query1.ParamByName('HOUSES').AsInteger:=2595;
вместо HOUSES, естественно Id_House...
Быстрый Шу (2006-06-06 10:12:00) [29]соответственно, что бы текст квери был примерно таков, как я понимаю:
Query1.SQL.Text:='SELECT * FROM HOUSES WHERE ID_HOUSE IN (:Id_House)';
Query1.ParamByName('HOUSES').As??????:=???????;