Вниз
Скачать: CL | DM;

Параметры в Query   Найти похожие ветки 

← →
iov ©   (2004-01-19 12:40) [0]

Вобщем есть такой примерно запрос
select * from tabl where field in (:1)
поле field типа integer
Пишу в параметр значение из StringList
Params[0].Value:=StringList.CommaText;
Если в StringList одно значение (строка) все прокатывает, если больше при выполнении запроса возвращается пустая выборка.
То есть получается в параметр нельзя записать больше одного значения (например Params[0].Value:="1,2,3,4"), а можно только так Params[0].Value:=1?


← →
Johnmen ©   (2004-01-19 12:42) [1]

А попробовать ?


← →
myor ©   (2004-01-19 12:48) [2]

То есть получается в параметр нельзя записать больше одного значения ...

"два по сто в одну посуду..."?

ясное дело, нельзя

params[0].value:="1";
params[1].value:="2"...


← →
iov ©   (2004-01-19 12:56) [3]

жаль
я думал такая конструкция сгодится :(
"а попробовать?" - пробовал, думал может где ошибаюсь, потому и спрашивал
в RxQuery это легко делается через макрос
select * from tabl where field in (%1)
в макрос пишу тотже stringList.CommaText
надеялся что через параметр в обычной Query так тоже можно :(


← →
Dingo   (2004-01-19 14:16) [4]

я вот сам с этим же парился, решения так и не нашёл.. :( пробовал уже практически всё, включая VariantArray - результат тт же - только одно значение принимает, зараза.. :(
Неужели совсем никакого нету способа задать в параметре перечисление?...


← →
asp ©   (2004-01-19 14:26) [5]

Не пройдет это.
Либо формировать текст запроса в коде, либо, в случае работы через BDE, воспользоваться RxQuery и макросом.
SELECT *
FROM TABLE1 T1
WHERE T1.ID IN ( %ID_LIST )

RxQuery1.MacroByName("ID_LIST").AsString = "1,2,3"

Замечание: изменение списка, разумеется, приводит к смене текста запроса и, как следствие, его перекомпиляции.


← →
asp ©   (2004-01-19 14:26) [6]

Не пройдет это.
Либо формировать текст запроса в коде, либо, в случае работы через BDE, воспользоваться RxQuery и макросом.
SELECT *
FROM TABLE1 T1
WHERE T1.ID IN ( %ID_LIST )

RxQuery1.MacroByName("ID_LIST").AsString = "1,2,3"

Замечание: изменение списка, разумеется, приводит к смене текста запроса и, как следствие, его перекомпиляции.


← →
DenK_vrtz ©   (2004-01-19 14:35) [7]

А что мешает динамически формировать запрос?

Одно значение - select * from tabl where field in (:s)
Два значения - select * from tabl where field in (:s,:s1)
N - значений - select * from tabl where field in (:s(1),..,:s(n))


← →
DenK_vrtz ©   (2004-01-19 14:36) [8]

Только в данном случае(динамическом запросе) смысл параметров(в какой то мере) утрачивается


← →
KDA   (2004-01-28 07:27) [9]

Я ранее тоже заморачивался с параметрами в запросах, теперь делаю например так (просто вырезка):
qryDate.Active := false;
with qryDate do
begin {сменить запрос по условиям выбора}
SQL.Clear;
SQL.Add("select j.""id"",j.""date"",j.""Time"",j.""Text"",j.""OKTXT"",r.""Fam"",j.""code"",j.""DTM"", j.""ZN"" ");
SQL.Add("from journal j, registry r");
if chkType.Checked then
SQL.Add(", temptype t1");
if chkDisp.Checked then
SQL.Add(", tempdisp t2");
SQL.Add("where j.""disp""=r.""id"" ");
if chkType.Checked then
SQL.Add("and j.""code""=t1.""code"" ");
if chkDisp.Checked then
SQL.Add("and j.""disp""=t2.""id"" ");
SQL.Add("order by j.""DTM"" asc");

end;
qryDate.Prepare;
qryDate.ExecSQL;

Благо в запросе не важно на какой строке что писать, можно хоть в цикле этот запрос формировать... такой подход помогает ориентироваться в SQL Server.

Поэтому делай где-то так:
SQL.Add(" where Field in ( "" "+param1+"""");
SQL.Add(", "" "+ param1+"""");
SQL.Add(", "" "+ param1+"""");
...
SQL.Add(" "") ");



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
7-53800
maxXP
2003-12-02 19:23
2004.02.17
Как определить нажата, отпущена кокретная клавиша клавиатуры a-z


14-53764
Passlight
2004-01-15 10:15
2004.02.17
Сколько у вас занимает времени дорога до места работы?


14-53725
Agent[007]
2004-01-26 18:55
2004.02.17
TStrings


1-53531
jiurajhgjhgty
2004-02-05 16:14
2004.02.17
Как запустить а затем закрыть внешнее приложение.


14-53700
AndersoNRules
2004-01-29 22:12
2004.02.17
U menya predlojeniye!!!!!!! prosto rulezz !!!




   Наверх