Всем привет дорогие друзья! Сегодня я хотел бы Вам рассказать о том, как можно сделать фильтрацию данных в Delphi, уже отфильтрованных данных. То есть, Вы сделали какой-то фильтр данных по определенному условию и определенному полю. Затем Вы хотите из этих отфильтрованных данных еще выбрать какие-то данные по определенному полю и условию. Так вот, в данной статье я Вам расскажу, как это можно сделать на Delphi, при использовании ADOQuery, но данный метод отлично подойдет для других сред разработки и программирования.
Для начала нам необходимо сформировать список полей и список условий, по которым мы будем фильтровать наши данные, он у меня получился вот таким:
По нажатию на кнопку Применить у меня формируется текстовая строка с условием фильтра, в зависимости от выбранного:
case ComboBox2.ItemIndex of
0: begin
sFilters:='';
Ur_Lica.ADOQuery1.Filter:='';
Ur_Lica.DBGrid1.Columns[0].Title.Font.Color:=clBlack;
end;
1: sFilters:='DATA='+Edit1.Text;
2: sFilters:='DATA>'+Edit1.Text;
3: sFilters:='DATA>='+Edit1.Text;
4: sFilters:='DATA<'+Edit1.Text;
5: sFilters:='DATA<='+Edit1.Text;
6: sFilters:='DATA<>'+Edit1.Text;
7: sFilters:='DATA LIKE '+Edit1.Text+'%';
8: sFilters:='DATA LIKE %'+Edit1.Text+'%';
end;
end;
И так далее для каждого поля. В конце я просто делаю обычную проверку: если к нашему ADOQuery уже был применен какой-то фильтр, то мы добавляем еще один, если не было, то мы делаем его только один раз, то есть, получается вот такая вот проверка:
if Ur_Lica.ADOQuery1.Filter<>'' then
Ur_Lica.ADOQuery1.Filter:=Ur_Lica.ADOQuery1.Filter+' and '+sFilters
else
Ur_Lica.ADOQuery1.Filter:=sFilters;
В итоге, если фильтрация данных была произведена, то мы сможем фильтровать данные с уже отфильтрованных, что очень удобно и быстро. Так что теперь Вы в курсе как быстро делать фильтрацию данных в Delphi.
Также советуем почитать на PressDev.RU
Короткая ссылка: http://pressdev.ru/?p=4180