Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
ВнизЗапрос Найти похожие ветки
← →
Марат (2004-04-22 06:21) [0]Здравствуйте, мастера. Вопрос такой. Есть массив A: array [0..50] of string;
Количество заполненных элементов Cou=3.
Запрос:
with query1 do begin
sql.clear;
sql.add("select ..."+
"where ...");
for i:=0 to Cou-1 do begin
sql.add("and AT.Textovka="+A[i]+" ");
end;
sql.add("order by ...");
open;
first;
end;
После выполнения дается RecordCount=0 хотя это неправда.
Посмотрите, пожалуйста. Может быть вы увидите ошибку или подскажете какой-нибудь другой путь для реализации данного запроса.
← →
ЮЮ © (2004-04-22 07:50) [1]>дается RecordCount=0 хотя это неправда
Это правда. Значение поля AT.Textovka не может ОДНОВРЕМЕННО быть равно ТРЕМ РАЗНЫМ значениям
← →
Марат (2004-04-22 08:10) [2]Я пробовал так :
sql.add("and AT.Textovka="+A[0]+" ");
т.е. без for. Не получается.
← →
sniknik © (2004-04-22 08:43) [3]значит нет такого значения. хотя ... что именно значит это "Не получается"? может and лишний?
← →
Марат (2004-04-22 08:50) [4]A[0]="0301". Если делаю так:
sql.add("and AT.Textovka="+""0301""+" ");
то получается.
← →
sniknik © (2004-04-22 08:54) [5]так у тебя текстовое значение, в одном случае кавычки(тризнак текста) есть в другом нет.
← →
bon © (2004-04-22 09:13) [6]sql.add("and AT.Textovka=""+A[i]+""");
← →
Леван (2004-04-22 09:42) [7]COGLASNO ЮЮ :
<<Это правда. Значение поля AT.Textovka не может ОДНОВРЕМЕННО быть равно ТРЕМ РАЗНЫМ значениям>>
mojet ne AND a OR
← →
marcel (2004-04-22 10:04) [8]1. Можно поробовать так:
sql.add("and AT.Textovka="+chr(39)+A[i]+chr(39));
chr(39) - код одинарной кавычки.
(хотя как правильно в MSSQL обрамлять текстовые константы - одинарными кавычками или двойными - не знаю).
2. подумай насчет OR вместо AND
3. Если размерность массива у тебя 50, а
>Количество заполненных элементов Cou=3.
, то может в запрос надо только эти три элемениа и добавлять?
← →
maxx0 (2004-04-22 10:09) [9]
var
s:String;
i:Integer;
...
if Cou>0 then
for i:=0 to Cou-1 do begin
s:=s+A[i];
if i<Cou-1 then
s:=s+", ";
end;
Query.SQL.Text:="select * from table where (AT.Textovka IN ("+
s+"))";
← →
marcel (2004-04-22 11:02) [10]> Марат
Ой. Я извиняюсь. Недосмотрел как у тебя условие цикла написано. Поэтому свой 3 пункт из [8] отменю :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c