Форум: "Базы";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизПараметры в 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 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.019 c