Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.02;
Скачать: CL | DM;

Вниз

Поиск   Найти похожие ветки 

 
Loco ©   (2002-08-12 14:25) [0]

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


 
SaS13 ©   (2002-08-12 14:30) [1]

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


 
Loco ©   (2002-08-12 14:40) [2]

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


 
Loco ©   (2002-08-12 14:45) [3]

Код:
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}
Как не использовать????


 
elv ©   (2002-08-12 14:52) [4]

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


 
SaS13 ©   (2002-08-12 14:55) [5]

а можно так:
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;


 
Loco ©   (2002-08-12 15:03) [6]

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


 
-peter- ©   (2002-08-12 15:09) [7]

Правельнее будет, наверное, так:
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;


 
SaS13 ©   (2002-08-12 15:10) [8]

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



Страницы: 1 вся ветка

Текущий архив: 2002.09.02;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
14-3595
vajo
2002-08-07 11:25
2002.09.02
NTFS


1-3411
ктото
2002-08-22 17:35
2002.09.02
form1+memo1,form2+memo2 memo1.lines=memo2.lines


14-3569
Бунтовщик
2002-08-05 20:42
2002.09.02
А можно ли успеть за тех прогрессом?


1-3403
Smok_er
2002-08-22 15:22
2002.09.02
VER120


1-3384
Alex4444444444
2002-08-22 11:49
2002.09.02
Фонты и рессурсы