Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Подстановка параметров в TQuery [D6, D7, MSSQL]


Страницы:   1 2

Быстрый Шу ©   (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??????:=???????;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо