Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Методичка - Організація баз даних і знань.doc
Скачиваний:
60
Добавлен:
02.05.2014
Размер:
631.3 Кб
Скачать

Лабораторна робота №8

Організація фільтрації у базі даних

Мета:вивчення властивостей, методів та подій для фільтрації записів.

Завдання:

  1. Виконати фільтрацію по одному та декількох полях.

  2. Виконати фільтрацію з використанням індексів та без індексів.

Обов’язкові засоби: SetRange, Filter, Filtered, FindFirst, FindLast, FindNext, FindPrior.

Зміст звіту.

  1. Опис застосування з зазначенням встановлених значень властивостей компонентів.

  2. Лістинги розроблених процедур та їх аналіз.

  3. Висновки по роботі.

Порядок виконання роботи

Методи ApplyRangeіSetRange.

Для фільтрації записів у ТБД компонент TTableмає такі методи:

procedure SetRangeStart - встановлює нижню межу фільтра;

procedure EditRangeEnd - встановлює верхню межу фільтра;

procedure ApplyRange -здійснює фільтрацію записів уTTable; умови фільтрації визначаються методамиSetRangeStartіEditRangeEnd;

procedure SetRange(const StartValues, EndValues: array of const) -дає той же ефект, що і послідовне виконання методівSetRangeStart,EditRangeEnd іApplyRange. У якості параметрів використовуються масиви констант, які містять значення ключових полів. МетодиApplyRange /SetRangeпоказують у НД тільки ті записи, індексні поля яких лежать у діапазоні[StartValues . . EndValues].

Фільтрація методами ApplyRange /SetRangeпроводиться по полю (полях) поточного індексу, обумовленого властивістюTTable.IndexNameабоTTable.IndexFieldNames. У випадку, якщо значення цих властивостей не встановлені, за замовчуванням використовується головний індекс ТБД. Тому, якщо потрібно використати індекс, відмінний від головного, необхідно явно перевстановити значення властивостіTTable.IndexName (ім'я поточного індексу)абоTTable.IndexFieldNames(список полів поточного індексу).

property Filtered:Boolean;

Властивість Filtered, встановлена вTrue, ініціює фільтрацію, умова якої записана або в обробнику подіїOnFilterRecord, або утримується як текстове значення у властивостіFilter. Якщо встановлені різні умови фільтрації і у подіїOnFilterRecord, і у властивостіFilter, то виконуються обидві.

Установка FilteredуFalseпризведе до скасування фільтрації, умови якої зазначені в подіїOnFilterRecordабо (і) у властивості Filter. При цьому фільтрація, накладена на НД методомSetRangeабоApplyRangeі йому супутніми методами, не порушується.

Властивості FilterіFiltered.

Властивість

property Filter:string;

дозволяє задати умови фільтрації. НД буде відфільтрований, як тільки його властивість Filteredстане рівноюTrue.

При записі умови фільтрації можна застосовувати оператори відношення: <; >; >=; <=; =; <>; а також використовувати логічні оператори AND, NOTіOR.

Використання методів FindFirst, FindLast, FindNext, FindPrior.

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

Для цього використовуються методи FindFirst,FindLast,FindNext,FindPrior.

Умову фільтрації можна зробити співпадаючою з умовою пошуку, зазначеною у параметрі KeyValuesметодуLocate. При цьому пошук за допомогою зазначених методів має перевагу перед пошуком за допомогоюLocate: якщо уLocateможна вказувати тільки значення, то в умові фільтрації можна вказувати логічні умови.

У випадку, якщо запис знайдено, дані методи повертають Trueу протилежному випадку -False.

function FindFirst: Boolean;- переходить на перший запис, що задовольняє умові фільтрації;

function FindLast: Boolean;- переходить на останній запис, що задовольняє умові фільтрації;

function FindNext: Boolean;- переходить на наступний запис, що задовольняє умові фільтрації;

function FindPrior: Boolean;- переходить на попередній запис, що задовольняє умові фільтрації;

Приклад:Виконати фільтрацію у таблиці студент.

Початкова форма:

Результат: