![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос [D5, MSSQL]
Марат © (2004-04-22 06:21:00)Здравствуйте, мастера. Вопрос такой. Есть массив 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 хотя это неправда.
Посмотрите, пожалуйста. Может быть вы увидите ошибку или подскажете какой-нибудь другой путь для реализации данного запроса.
marcel (2004-04-22 11:02:00) [1]> Марат
Ой. Я извиняюсь. Недосмотрел как у тебя условие цикла написано. Поэтому свой 3 пункт из [8] отменю :)
maxx0 (2004-04-22 10:09:00) [2]
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 10:04:00) [3]1. Можно поробовать так:
sql.add('and AT.Textovka='+chr(39)+A[i]+chr(39));
chr(39) - код одинарной кавычки.
(хотя как правильно в MSSQL обрамлять текстовые константы - одинарными кавычками или двойными - не знаю).
2. подумай насчет ORвместо AND
3. Если размерность массива у тебя 50, а
>Количество заполненных элементов Cou=3.
, то может в запрос надо только эти три элемениа и добавлять?
Леван (2004-04-22 09:42:00) [4]COGLASNO ЮЮ :
<<Это правда. Значение поля AT.Textovka не может ОДНОВРЕМЕННО быть равно ТРЕМ РАЗНЫМ значениям>>
mojet ne AND a OR
bon (2004-04-22 09:13:00) [5]sql.add('and AT.Textovka="'+A[i]+'"');
sniknik (2004-04-22 08:54:00) [6]так у тебя текстовое значение, в одном случае кавычки(тризнак текста) есть в другом нет.
Марат (2004-04-22 08:50:00) [7]A[0]='0301'. Если делаю так:
sql.add('and AT.Textovka='+''0301''+' ');
то получается.
sniknik (2004-04-22 08:43:00) [8]значит нет такого значения. хотя ... что именно значит это "Не получается"? может and лишний?
Марат (2004-04-22 08:10:00) [9]Я пробовал так :
sql.add('and AT.Textovka='+A[0]+' ');
т.е. без for. Не получается.
ЮЮ (2004-04-22 07:50:00) [10]>дается RecordCount=0 хотя это неправда
Это правда. Значение поля AT.Textovka не может ОДНОВРЕМЕННО быть равно ТРЕМ РАЗНЫМ значениям