![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
поиск нужно что бы осуществлялся по Одному ИЛИ не стольким полям
Подскажите как обойти проблему, если хоть одно поле в строке оказывается пустое т.е (Null) , то строка выбывает из поиска Если можно подскажите на примере одного поля или Как переконструировать весь запрос.. Код:
procedure TMform.Button1Click(Sender: TObject);
begin
//Осуществляем поиск
ADOQuery1.Close; {деактивируем запрос в качестве одной из мер предосторожности}
ADOQuery1.SQL.Clear; {стираем предыдущий запрос}
ADOQuery1.SQL.Add('select КЛ, ФИО, Оборудование, Телефон, SN, [Дата поступления], [Дата ремонта]') ;
ADOQuery1.SQL.Add('from Клиент');
ADOQuery1.SQL.Add('where ((КЛ LIKE ''%'+Edit1.Text+'%'') AND (ФИО LIKE ''%'+Edit2.Text+'%'') AND (Оборудование LIKE ''%'+Edit4.Text+'%'') AND (Телефон LIKE ''%'+Edit3.Text+'%'') )');
ADOQuery1.Open; {выполняем запрос}
ADOQuery1.Active:=true;
DataSource1.DataSet:=ADOQuery1;
DbGrid1.DataSource:=DataSource1;
end; |
|
#2
|
|||
|
|||
|
Решение найдено
Код:
procedure TMform.Button1Click(Sender: TObject);
begin
//Осуществляем поиск
ADOQuery1.Close; {деактивируем запрос в качестве одной из мер предосторожности}
ADOQuery1.SQL.Clear; {стираем предыдущий запрос}
ADOQuery1.SQL.Add('select КЛ, ФИО, Оборудование, Телефон, SN, [Дата поступления], [Дата ремонта]') ;
ADOQuery1.SQL.Add('from Клиент');
ADOQuery1.SQL.Add('where ((КЛ LIKE ''%'+Edit1.Text+'%'') AND (ФИО LIKE ''%'+Edit2.Text+'%'' OR ФИО IS NULL ) AND (Оборудование LIKE ''%'+Edit4.Text+'%'' OR Оборудование IS NULL) AND (Телефон LIKE ''%'+Edit3.Text+'%'' OR Телефон IS NULL) )');
ADOQuery1.Open; {выполняем запрос}
ADOQuery1.Active:=true;
DataSource1.DataSet:=ADOQuery1;
DbGrid1.DataSource:=DataSource1;
end; |
|
#3
|
||||
|
||||
|
Цитата:
Это строчка лишняя раз открываешь кверик. Open и Active:= true выполняют одну и ту же операцию. |