Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция-7.doc
Скачиваний:
10
Добавлен:
20.02.2016
Размер:
111.62 Кб
Скачать

XX.Фільтрація набору даних

Один із найбільш загальних механізмів фільтрації, використовуваних у Delphi, - обмеження представлення набору даних до деяких зазначених записів. Цей процес виконується таким чином:

1. Назначте процедуру події onFilterRecord набору даних. У цю процедуру варто помістити оператори, що виконують відбір записів на основі значень одного або декількох полів.

2. Встановіть властивість Filtered набору даних рівним True.

Створимо оброблювач події onFilterRecord для таблиці. У даному випадку будуть відбиратися тільки ті записи, у яких значення поля Company починається з прописної букви К. Текст цієї процедури виглядає так:

Procedure TForm1. Table1FilterRecord

(DataSet:TdataSet:TdataSet; var Accept:Boolean);

Var

Fl:string;

Begin

Fl:=DataSet['Company'];

Accept:=FieldVal[1]='K';

End;

XXI.Пошук записів

Для виконання пошуку записів для таблиць dBASE або Paradox вони повинні бути проіндексовані. Для SQL таблиць пошук буде уповільнений при пошуку по непроіндексованим полям.

-пошук за допомогою методу FindKey():

Метод FindKey() дозволяє здійснювати пошук використовуючи одне або декілька ключових полів при одному виклику функції. В якості параметру методу FindKey() передається масив типу array of const, що містить критерії пошуку. Якщо пошук здійснився метод повертає значення true.

Напиклад, наступний оператор шукає запис де перше поле в індексі містить значення 123, а друге Hello:

If not Table1.FindKey([123,’Hello’]) then MessageBeep(0);

Якщо поле не знайдено, метод повертає значення і компютер видає звуковий сигнал.

-пошук за допомогою методів SetKey()…GotoKey():

Виклик методу SetKey переводить таблицю в режим, при якому її поля підготовлюються до заповнення значень, що являють собою критерії пошуку. Як тільки критерії пошуку встановлені, можна викликати метод GotoKey(), який здійснює пошук зверху до низу. Попередній пошук з приміненнія даних методів матиме наступний вигляд:

Table1.SetKey;

Table1.Fields[0].AsInteger:=123;

Table1.Fields[1].AsInteger:=’Hello’;

If not GotoKey then MessageBeep(0);

-пошук найблищої відповідності:

За допомогою метода FindNearest() або пари методів SetKey()…GotoNearest() можна здійснювати пошук найблищої відповідності.

Для пошуку первого запису, де значення першого індексованого поля найбільш блиське (більше або рівне) 123, використовуйте наступний код:

Table1.FindNearest([123]);

Тут в якості параметрів, теж передається масив типу array of const, що містить критерії пошуку.

Методи SetKey()…GotoNearest() можна використати наступним чином:

Table1.SetKey;

Table1.Fields[0].asInteger:=123;

GotoNearest;

Якщо пошук здійснився i властивість KeyExclusive таблиці = false, покажчик поточного запису буде встановлений на першу із записів що відповідає критерію пошуку. А якщо ж властивість KeyExclusive=true то поточним буде запис, що є наступним після останнього запису що відповідає критерію пошуку.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]