Главная страница
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.051 c
7-1080671449
Kme
2004-03-30 22:30
2004.05.16
Запрет на использование джойстика


3-1082482969
neVIP.
2004-04-20 21:42
2004.05.16
Посоветуйте с SQL запросом...


14-1083170003
Jully
2004-04-28 20:33
2004.05.16
Изменение приоритета выполнения главного треда


14-1082707152
Alexei Sviridov
2004-04-23 11:59
2004.05.16
Наставте на путь истинный


1-1083144254
Koliaff
2004-04-28 13:24
2004.05.16
Распечатка PaintBox.