Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-53691
Думкин
2004-01-30 06:04
2004.02.17
С днем рождения! 30 января.


1-53633
Мыш
2004-02-06 07:13
2004.02.17
перехват вызовов процедур


3-53413
Lisa
2004-01-26 13:30
2004.02.17
доступ к ячейке в DBGrid


3-53392
Alex-kosmonavt
2004-01-27 10:59
2004.02.17
Покрасить строчку в DBGrid


3-53432
stud
2004-01-28 14:04
2004.02.17
IP подключенных к базе ользователей





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский