Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.039 c
1-1083163718
Svetka*
2004-04-28 18:48
2004.05.16
Лабораторная.... помогите девушке!


3-1082537942
Vopros
2004-04-21 12:59
2004.05.16
Encrypted dBASE tables как открыть?


3-1081826210
johnny
2004-04-13 07:16
2004.05.16
Lookup поля


6-1079982504
3APA3A
2004-03-22 22:08
2004.05.16
Несколько подключений к одному IP:Port...


6-1080475939
iudjen
2004-03-28 16:12
2004.05.16
как скачать файл с интернета




   Наверх