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

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

Поиск


Loco ©   (2002-08-12 14:25:00) 

Привет всем!
Ребята, подскажите, может я туплю просто, но не могу сообразить... Есть на форме 3 элемента edit (к примеру). Они соответствуют 3 полям в таблице (например: Фамилия, Имя, Отчество). Из edit"ов берутся параметры для запроса. Если все 3 поля заполнены - всё нормально, а если хоть одно пустое - запрос не работает (не удивительно):). А если я хочу найти всех Ивановых, и мне по фигу какое там у них И.О. ............. Одним словом: как пустое поле определить как "джокер"???? Может вопрос и глупый, но чего-то не придумывается ничего........
Спасибо.


SaS13   (2002-08-12 15:10:00) [1]

или действительно как говорит elv © (12.08.02 14:52)попробуй через оператор LIKE


-peter-   (2002-08-12 15:09:00) [2]

Правельнее будет, наверное, так:
0: begin
DM1.Query1.SQL.Add("WHERE c.PASPSER LIKE :SERIA AND c.PASPNOM LIKE :NUMBER");
if edSeria.Text="" then edSeria.Text:="%";
if edNumber.Text="" then edNumber.Text:="%";
DM1.Query1.ParamByName("Seria").AsString:=edSeria.Text;
DM1.Query1.ParamByName("Number").AsString:=edNumber.Text;
end;


Loco   (2002-08-12 15:03:00) [3]

Мысль!
Шпасибо, щас попробую


SaS13   (2002-08-12 14:55:00) [4]

а можно так:
1: begin
cStr := "WHERE ";
if edFam.Text <> EmptyStr then
cStr := cStr + "c.fam =:Familia and ";
if edName.Text <> EmptyStr then
cStr := cStr + "c.nam =:Name and ";
if edOtch.Text <> EmptyStr then
cStr := cStr + "c.pat =:Otch and ";
cStr := cStr + "c.pat =:Otch";
DM1.Query1.SQL.Add( cStr );
end;


elv   (2002-08-12 14:52:00) [5]

if Trim(edit.text)="" then edit.text:="%";


Loco   (2002-08-12 14:45:00) [6]

Код:
with DM1.Query1 do
begin
Close;
SQL.Clear;
SQL.Add("SELECT *");
SQL.Add("FROM "currentdata.dbf" c");
case Radiogroup1.ItemIndex of
0: begin
DM1.Query1.SQL.Add("WHERE c.PASPSER =:SERIA AND c.PASPNOM =:NUMBER");
DM1.Query1.ParamByName("Seria").AsString:=edSeria.Text;
DM1.Query1.ParamByName("Number").AsString:=edNumber.Text;
end;
1: begin
DM1.Query1.SQL.Add("WHERE c.fam =:Familia and c.nam =:Name and c.pat =:Otch and c.bday=:DRogd");
DM1.Query1.ParamByName("Familia").AsString:=edFam.Text;
DM1.Query1.ParamByName("Name").AsString:=edName.Text;
DM1.Query1.ParamByName("Otch").AsString:=edOtch.Text;
DM1.Query1.ParamByName("DRogd").AsDate:=dtpRogd.Date;
end;
2: begin
DM1.Query1.SQL.Add(", "streets.dbf" s WHERE s.street =:Str and s.code = c.streetcode and c.home =:House and c.bld =:Korp and c.flat =:Kvart");
DM1.Query1.ParamByName("Str").AsString:=edStreet.Text;
DM1.Query1.ParamByName("House").AsString:=edHouse.Text;
DM1.Query1.ParamByName("Korp").AsString:=edKorp.Text;
DM1.Query1.ParamByName("Kvart").AsString:=edKvart.Text;
end;
end;
Open;
end;{with}
Как не использовать????


Loco   (2002-08-12 14:40:00) [7]

2SaS13 ©
Привет.
Поиск происходит при помощи query.
А не использовать не получается: значение edit"а используется как Param в запросе.


SaS13   (2002-08-12 14:30:00) [8]

как пустое поле определить как "джокер"
не использовать его в запросе.
Как поиск то происходит?


Наверх

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