Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5_проект_адмін_БД.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2.87 Mб
Скачать

21.Фільтрація

На відміну від методів пошуку, що припускають добування даних зі сховища даних фільтрація припускає добір уже відібраних даних у клієнтському додатку. Для реалізації даного підходу в Delphi у компонентах доступу до даних уведені дві властивості Filter і Filtered. Установка властивості Filtered типу boolean у true переводить компонент у режим фільтрації. У властивості Filter при цьому можна визначити значення фільтру для відбору записів. Побудова фільтру багато в чому схоже на побудову умови where у SQL запиті. Основна відмінність у тім, що слово where не пишеться, використовуються інші знаки підстановки, у тексті фільтру не можна після знаків порівняння вставляти імена полів для локальних таблиць. Якщо ім'я поля містить пробіли, то його записують в квадратних дужках, наприклад [Home directory] Властивість FilterOptions дозволяє встановити додаткові параметри фільтрації, а саме

foCaseInsensitive - нечутливість до регістру в текстових полях;

foNoPartialCompare - відсутність пошуку по частковій умові, при установці даної опції знак * сприймається як літера, а не як знак підстановки будь-яких символів.

Приклад фільтрації можна знайти в прикладах, що поставляються з Delphi.

Реалізуємо фільтрацію даних за досить простих умов. У випадку, якщо необхідно реалізувати більш складний нестандартний фільтр можна написати обробник події OnFilterRecord. Тип події визначений як

type TFilterRecordEvent = procedure(DataSet: TDataSet; var Accept: Boolean) of object;

Іншими словами в обробнику події можна змінювати змінну Accept, указуючи чи буде відображатися кожен конкретний запис. Наприклад обробник може виглядати так:

Accept := DataSet['DateOfPayment'] > DataSet['DateOfPurchase'] + 30;

Зауважимо, що обробник події доповнює, а не заміщає властивість Filter, тож якщо включена фільтрація (Filtered := true) і ця властивість містить значення фільтра, то умова в обробнику події і фільтр пов'язані логічним відношенням "AND".