![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Параметрический запрос [Paradox]
glow © (2003-09-19 12:11:00)
Добрый день уважаемые мастера!
SELECT DISTINCT A.RNOM FROM ASPI.db A WHERE (A.KAT = 1)AND (A.SP = :s)AND EXISTS(SELECT * FROM Prikaz.db C WHERE (C.RNOM = A.RNOM) AND (C.Type = 1) AND C.dat BETWEEN ""1.1." + IntToStr(G) + """ AND ""31.12." + IntToStr(G) + """)
Параметр :s изменяется в цикле по таблице tNspec(DM.q1NK.ParamByName("s").AsString:=DM.tNspecKOD.AsString;)
но в запрос с подзапросом параметр не передается (ошибка: неправильное использование ключевого слова), надо как-то по-другому передать значение в запрос
Sandman25 (2003-09-19 15:27:00) [21]
[2] glow © (19.09.03 13:57)
Да. У меня просто старая привычка вместо Q.SQL.ADD("") использовать Q.SQL.Text := ""
[4] Bob © (19.09.03 14:05)
Вложенный запрос может выполниться и "после" внешнего. В данном случае именно так и будет - для каждой строки-кандидата из A будет выполняться вложенный запрос по C и проверяться его результат.
Bob (2003-09-19 14:05:00) [22]
EXISTS(SELECT * FROM Prikaz.db C WHERE (C.RNOM = A.RNOM) AND (C.Type = 1) AND C.dat BETWEEN ""1.1." + IntToStr(G) + """ AND ""31.12." + IntToStr(G) + """)
A.RNOM откуда возьмется. Сначала у тебя отработается вложенныйзапрос, а потом ты перейдешь к внешнему. Попробуй так FROM ASPI.DB A, PRIKAZ.db c. Должно прокатить.
Johnmen (2003-09-19 14:01:00) [23]
!
glow (2003-09-19 13:57:00) [24]
Заново это Q.Clear
Q.SQL.ADD()
?
Sandman25 (2003-09-19 12:16:00) [25]
Если запрос с подзапросом параметр не передается,
то можно либо написать хранимую процедуру с параметром,
либо каждый раз в цикле создавать SQL.Text заново.