Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Запрос [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 не может ОДНОВРЕМЕННО быть равно ТРЕМ РАЗНЫМ значениям


Наверх

Титульная страница Поиск, карта сайта Написать письмо