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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2012, 16:41   #1
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию Фильтрация данных в таблице

Здравствуйте. У меня следующая задачка:
Имеется таблица с тремя полями: Login, Password, Access (уровень доступа).
Мне нужно осуществлять фильтрацию по одному или нескольким полям.
Код написал следующий:
Код:
ADOQuery1.Filtered:=true;
ADOQuery1.Filter:= 'Login='+QuotedStr(Edit1.Text);
ADOQuery1.Filter:= 'Password='+QuotedStr(Edit2.Text);
ADOQuery1.Filter:= 'Access='+QuotedStr(Combobox1.Text);
Но тут фильтрация осуществляется как бы одновременно по всем трем фильтрам, то есть, если какое-либо поле (edit1, edit2, combobox1) оставить не заполненным, то результаты фильтрации будут нулевыми.
Вопрос: как сделать так, чтобы я заполнял фильтры на свой выбор и фильтрация осуществлялась именно по заполненным фильтрам?
Я так подозреваю, нужно прописывать какие-то условия. Подскажите, пожалуйста. Заранее спасибо.
stevieg вне форума Ответить с цитированием
Старый 04.10.2012, 17:21   #2
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

у меня был проект, где по всем полям искался текст из edit.
вот код, может поможет =) таблица - состоит из полей - имя, фамилия, отчество
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Trim(Edit1.Text)<>''  then begin
   adoquery1.Filtered := false;
   adoquery1.Filter :=' name Like '+ QuotedStr('*'+Trim(Edit1.Text)+'*')
 +'or first_name Like '+ QuotedStr('*'+Trim(Edit1.Text)+'*')
 +'or second_name Like '+ QuotedStr('*'+Trim(Edit1.Text)+'*');
   adoquery1.Filtered := true;
  end
  else begin
    adoquery1.Filtered := false;
  end;
end;

Последний раз редактировалось kate158; 04.10.2012 в 17:47.
kate158 вне форума Ответить с цитированием
Старый 04.10.2012, 17:28   #3
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Цитата:
Сообщение от kate158 Посмотреть сообщение
у меня был проект, где по всем полям искался текст из edit.
вот код, может поможет =) таблица - состоит из полей - имя, фамилия, отчество
Код:
procedure TForm1.edFilterNameChange(Sender: TObject);//обработка изменений эдита
begin
  if Trim(edFilterName.Text)<>''  then begin
   dm.people.Filtered := false;
   dm.people.Filter :=' name Like '+ QuotedStr('*'+Trim(edFilterName.Text)+'*')
 +'or first_name Like '+ QuotedStr('*'+Trim(edFilterName.Text)+'*')
 +'or second_name Like '+ QuotedStr('*'+Trim(edFilterName.Text)+'*');
   dm.people.Filtered := true;
  end
  else begin
    dm.people.Filtered := false;
  end;
end;
Кейт, поясните пожалуйста, edFilterName и dm.people - это что у вас?
stevieg вне форума Ответить с цитированием
Старый 04.10.2012, 17:40   #4
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

edFilterName - так у меня названо поле edit,dm.people - data module, на котором размещен ado query (people).я всегда для всех adoquery создаю отдельный data module
исправила.кинь на форму edit, при наборе текста у тебя будет фильтроваться таблица

Последний раз редактировалось kate158; 04.10.2012 в 17:52.
kate158 вне форума Ответить с цитированием
Старый 04.10.2012, 18:09   #5
stevieg
Пользователь
 
Регистрация: 28.11.2011
Сообщений: 24
По умолчанию

Кейт, большое спасибо, все работает.
P.S. Прикольная подпись
stevieg вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация данных uiivalet Общие вопросы Delphi 0 10.03.2012 21:38
Фильтрация данных snikers987 PHP 1 07.02.2011 23:36
Фильтрация данных Savin БД в Delphi 3 10.06.2010 18:17
Фильтрация данных skiffter Помощь студентам 10 17.11.2009 16:44
Фильтрация записей в таблице TaTT DoGG БД в Delphi 49 28.03.2009 19:04