|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибка преобразования значения varchar
Добрый день.
С программированием почти не знаком. Питаюсь состряпать программку, которая будет выводить в таблицу результат 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. |