Delphi. VCL и не только. Делаем фильтр. Почти быстро и просто

Выглядеть он будет у нас вот так…

Можно добавлять бесконечное число параметров для фильтрования. Это начальная версия, я расскажу идею, там ещё много всего надо доработать, но как идея вполне рабочая. 

Смысл такой – нам нужно составить запрос к базе визуально, и в секцию where SQL запроса добавить конструкцию вида

Но сначала сделаем подготовку. Создадим форму, со скролбоксом, на который будем добавлять фрэймы в TObjectList и далее работать с ним. Как мы будем это делать?

Вот наш TObjectList как поле класса

Добавим в конструктор и деструктор соответствующие записи

По нажатию на добавить параметр будет происходить что-то вроде…

Модуль элемента фильтра (фрэйм)

Пара комбобоксов и tedit для получения значения.

Нам также понадобится процедура для перестраивания элементов после удаления одного из них

Нам также понадобится некоторый стартовый запрос, к которому мы будем добавлять ту часть, которая отвечает за фильтрацию, у меня он выглядит так

Ок, к этому запросу нам нужно добавить часть, которая будет отвечать за фильтрацию. Теперь собственно конструирования строки

Ну и финальный аккорд, вызов в том месте, где нам это нужно, будет выглядеть примерно так…

Не претендую на гениальность. Возможно есть более простые “библиотечные” решения, но я пошел своим путем.

Можно ещё добавить условие Like, дополнительно к “равно”.

С уважением,  Пантелеев Станислав (elGringo).

 

This entry was posted in Delphi, MySQL. Bookmark the permalink.