![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Добрый день.
С программированием почти не знаком. Питаюсь состряпать программку, которая будет выводить в таблицу результат sql-скрипта. Код:
var
z : Byte;
Form1: TForm1;
a, k, n, t, dn, dk, w, an: string;
procedure TForm1.GoClick(Sender: TObject);
begin
z:=0;
if agent.Text <> '' then
begin
a:= 'CLIENT='+ agent.Text;
z:=z+1;
end;
if knp.Text <> '' then
begin
k:= 'CHECK='+ knp.Text;
z:=z+1;
if z>1 then begin k:= 'and '+k; end;
end;
if Nomber.Text <> '' then
begin
n:= 'NUMBER='+ Nomber.Text;
z:=z+1;
if z>1 then begin n:= 'and ' +n; end;
end;
if dateN.Text <> '' then
begin
dn:= 'Date>'+ dateN.Text;
z:=z+1;
if z>1 then begin dn:= 'and ' +dn; end;
end;
if DateK.Text <> '' then
begin
dk:= 'Date<'+ DateK.Text;
z:=z+1;
if z>1 then begin dk:= 'and ' +dk; end;
end;
if z>0 then begin w:='where'; end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
adoQuery1.sql.Add('select * from OPEN where '+a +k +n +dn + dk);
ADOQuery1.Open;
end;В результате при выполнении, если заполнены agent.text и knp.text одновременно все проходит нормально. Если выполнять только при заполненном knp.text выскакивает: Цитата:
В чем может быть причина? |
|
#2
|
||||
|
||||
|
Вы неправильно по любому формируете запрос.
У вас предполагается несколько условий а их надо отделять друг от друга логической связкой OR или AND. Если какое-то условие нам не надо, то переменная для него уже будет равна ''. Есть еще пара подводных камней, но это уже после того как поправите свой код. |
|
#3
|
|||
|
|||
|
Цитата:
1.Задаем счетчик Код:
z:=0; Код:
if agent.Text <> '' then
begin
a:= 'CLIENT='+ agent.Text;
z:=z+1;
end;Код:
if knp.Text <> '' then
begin
k:= 'CHECK='+ knp.Text;
z:=z+1;
if z>1 then begin k:= 'and '+k; end;второе выполняется(z=1), if z>1 then begin k:= 'and '+k; end; -не проходит т.е and не добавляется Сам запрос: Код:
adoQuery1.sql.Add('select * from OPEN where '+a +k);Последний раз редактировалось 270787, 24.11.2010 в 16:18. |