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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2012, 01:53   #1
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию Правильно построить запрос, и убрать ненужные параметры

Здраствуйте, помогите пожайлуста с реализацией, суть такая, есть насколько параметров для поиска данных, параметры получаем из элементов на форме (Edit, ComboBOx и т.п.) так вот, если CheckBox.Checked
то параметр должен участвовать в запросе а если нет, то нет...


Код:
procedure TForm1.Button13Click(Sender: TObject);
begin
  with SMSF do
    begin
      Close;
      SQL.Text:='Select * from CLIENTS where (EMAIL like :mail) AND (D_ROZH = :d_rozh)';
      If CheckBox1.Checked then ParamByName('mail').AsString:='';
      If CheckBox6.Checked then ParamByName('d_rozh').AsDate:=Date1.Date;
      Open;
    end;
end;
Проблема в том что, если указать только один параметр, то унжные данные не находятся, а вот если указат ьвсе параметры (выделить чекбоксы и указать данные), то всё находится, подскажите как реализовать запрос таким образом что если чекбокс не чекед тогда параметр не участвует в запросе....

Заранее благодарю!
Dozent вне форума Ответить с цитированием
Старый 28.12.2012, 02:50   #2
Dozent
Форумчанин
 
Регистрация: 21.05.2008
Сообщений: 495
По умолчанию

мб кому пригодится

Код:
procedure TForm1.Button13Click(Sender: TObject);
var
  LWhere: string;
begin
  LWhere := '';
  If CheckBox1.Checked then LWhere := LWhere + ' (EMAIL like :mail)';
  If CheckBox6.Checked then begin
    if LWhere <> '' then
      LWhere := LWhere + ' AND ';
    LWhere := LWhere + ' (D_ROZH = :d_rozh)';
  end;
  if LWhere <> '' then
    LWhere := ' WHERE ' + LWhere;
  with SMSF do
    begin
      Close;
      SQL.Text:='Select * from CLIENTS' + LWhere;
      If CheckBox1.Checked then ParamByName('mail').AsString:='';
      If CheckBox6.Checked then ParamByName('d_rozh').AsDate:=Date1.Date;
      Open;
    end;
end;
Dozent вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не правильно задал параметры?C++ Arrioh Помощь студентам 4 26.03.2012 00:06
COUNT с условием или как правильно построить запрос silent_lab SQL, базы данных 13 01.08.2011 12:00
Как убрать ненужные строки в запросе! CRASH040 Общие вопросы Delphi 9 01.06.2011 22:29
WSH: Как правильно передать параметры коммандной строки? voam JavaScript, Ajax 4 12.12.2009 15:16
SQL запрос требует ненужные поля alikon1 БД в Delphi 5 12.10.2007 09:50