Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2011, 15:49   #1
lysyuk1
Новичок
Джуниор
 
Регистрация: 16.11.2011
Сообщений: 2
По умолчанию Как составить запрос по нескольким полям

Здраствуйте!Помогите пожалуйста с запросом у меня есть запрос который ищет если заполненые все поля для поиска,а мне нужно его переделать, что б искал.даже если заполненое одно поле из трех полей,которые надо вводить или два поля из трех которые нужно вводить!Как ето сделать?

Пример моего запроса:

Код:
procedure TForm16.Button1Click(Sender: TObject);
var
Facul, stat: String;
k:integer;
begin
Facul:=edit1.Text;
Stat:=edit2.Text;
Form16.Query1.Close;
Form16.Query1.SQL.Clear;
Form16.Query1.SQL.Add('Select PIP,Etaj,Etajnist');
Form16.Query1.SQL.Add('From ":Rieltor:info.db"');
Form16.Query1.SQL.Add('Where');
Form16.Query1.SQL.Add('(Byd="'+Facul+'" AND KV="'+Stat+'")');
Form16.Query1.SQL.Add('Order by PIP');
Form16.Query1.Open;
If Form16.Query1.RecordCount <>0 Then
begin
DataSource1.DataSet.Active:=true;
DataSource1.DataSet := Query1;
k:=Query1.RecordCount;
Label1.Caption:=floatTostr(k);
end
Else
begin
ShowMessage('У базі даних немає записів, які задовільняють умовам');
DataSource1.DataSet := Table1;
end;
end;
Помогите пожалуйста!

Что за название "Запросом Delphi !" ???
Переделал. Читайте правила раздела, там есть примеры, как давать правильные названия своим темам.
А такие названия наказуемы...

Последний раз редактировалось mihali4; 16.11.2011 в 23:23. Причина: не полностью изложил суть вопроса
lysyuk1 вне форума Ответить с цитированием
Старый 16.11.2011, 16:47   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
что б искал.даже если заполненое одно поле из трех полей,которые надо вводить или два поля из трех которые нужно вводить!Как ето сделать?
Код:
pref:='';
if Facul<>'' then begin
  Form16.Query1.SQL.Add(' Byd="'+Facul+'"');
  pref:='AND  '; //пробелы в конце нужны чтобы быть уверенным что этот оператор не сольется со следующим условием.
end;
if Stat<>'' then begin
 Form16.Query1.SQL.Add(pref +' KV="'+Stat+'")');
 pref:='AND'; //на случай если потом появится третье поле поиска 
end;
то же но с использованием параметров запроса.
Код:
if Facul<>'' then begin
  Form16.Query1.SQL.Add(' Byd=:Facul');
  Form16.Query1.Parama.Parambyname('Facul').value:=Facul;
  pref:='AND';
end;
if Stat<>'' then begin
 Form16.Query1.SQL.Add(pref +' KV=:Stat');
 Form16.Query1.Parama.Parambyname('Stat').value:=Stat;
 pref:='AND'; //на случай если потом появится третье поле поиска 
end;
Цитата:
Код:
k:=Query1.RecordCount;
Label1.Caption:=floatTostr(k);
Для перевода ЦЕЛЫХ есть IntTostr
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 16.11.2011 в 16:52.
evg_m вне форума Ответить с цитированием
Старый 16.11.2011, 17:04   #3
lysyuk1
Новичок
Джуниор
 
Регистрация: 16.11.2011
Сообщений: 2
По умолчанию

17:04
Извините, за вопрос, но не могли б вы полностю код вставить, а то я так и не понял после чего его вставлять!

17:24
ЧТо-то нифига не работает((((

Красные жирные циферки видны ?
Это время, когда вы отправляли свои сообщения друг за другом, подряд.
У нас есть кнопка "Правка".
Читаем правила раздела.
По правилам это приравнивается к флуду.

Последний раз редактировалось mihali4; 16.11.2011 в 23:25.
lysyuk1 вне форума Ответить с цитированием
Старый 17.11.2011, 10:13   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Извините, за вопрос, но не могли б вы полностю код вставить, а то я так и не понял после чего его вставлять!
Ваш код
Цитата:
Form16.Query1.SQL.Add('(Byd="'+Facu l+'" AND KV="'+Stat+'")');
заменяем на мой код (вариант 1) и добавляем нужные переменные
Код:
pref: string;
Цитата:
ЧТо-то нифига не работает((((
1. читаем комментарии и анализируем скопированный код
2. приведено слишком расплывчатое определение неработы.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск Locate по нескольким полям athleet Общие вопросы Delphi 5 22.05.2011 15:34
Sql запрос по нескольким полям Епгений БД в Delphi 6 20.06.2010 12:04
Фильтрация по нескольким полям в OnChenge Miha87 БД в Delphi 5 10.11.2008 18:49
Фильтрация по нескольким полям! Askat БД в Delphi 1 14.06.2007 06:44