Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Запрос   Найти похожие ветки 

 
Марат   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
1-1083345148
Learner
2004-04-30 21:12
2004.05.16
Корректное уничтожение формы.


14-1082970834
Инкогнито
2004-04-26 13:13
2004.05.16
Проясните, пожалуйста


1-1083497810
XSteel
2004-05-02 15:36
2004.05.16
Динамические массивы в Delphi 1 и структуры > 65кил


11-1069673509
Fktrc
2003-11-24 14:31
2004.05.16
TKOLOpenSaveDialog - вызывается только при второй попытке


3-1082618842
avgur
2004-04-22 11:27
2004.05.16
Вопрос о клиент сервере