- •1.Вступ. Основні поняття
- •2.Основні елементи реляційної моделі даних:
- •3.Sql Теоретичні відомості
- •4.Переваги sql
- •5.Sql. Синтаксис оператора select
- •6.Sql. Синтаксис оператора insert
- •7.Sql. Синтаксис оператора update
- •8.Sql. Синтаксис оператора delete
- •9.Sql. Підзапити
- •10. Оператори exist, any, some, all
- •11.Оператори all, any та some
- •12. Об’єднань таблиць. Стандарт sql2. Види.
- •13.. Об’єднань таблиць. Стандарт sql2 .Внутрішні об’єднання. Оператор inner join
- •14. Об’єднань таблиць. Стандарт sql2. Зовнішні об’єднання (outer join) та його типи: ліве, праве та повне
- •15. Об’єднань таблиць. Стандарт sql2 Самооб’єднання таблиць
- •16.Додаток доступу до бд на мові програмування високого рівня
- •Поняття бази даних. Структура бази даних
- •17.Додаток доступу до бд. Локальні і віддалені бази даних
- •Механізм доступ до бази даних. Псевдоніми dbe
- •Компоненти доступу до баз даних
- •Створення форми для роботи з базами даних (вручну)
- •Створення форми для роботи з базами даних (майстром)
- •18.Додаток доступу до бд Вибір інформації з бази даних
- •19. Тема: методи пошуку та фільтрації.
- •20.Метод пошуку та фільтрації. Пошук даних
- •Методи класу tTable
- •Використання tQuery
- •21.Фільтрація
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".
