- •(6 Год.)
- •Фільтрація набору даних
- •Пошук записів
- •IV.Навігація по наборі даних.
- •V.Властивості bof, eof і циклічний обробіток.
- •VI.Закладки.
- •VII.Компонент tDataSource
- •VIII.Робота з полями.
- •IX.Значення поля
- •Властивості об'єкта tField для доступу до значень полів.
- •Х.Імена і номера полів
- •XI.Маніпулювання полемо даних.
- •XII.Редактор полів.
- •XIII.Додавання полів
- •XIV.Поля й інспектор об'єктів
- •XV.Обраховочні поля
- •XVI.Підстановочні поля
- •XVII.Перетягування полів мишею
- •VIII.Відновлення набору даних
- •XIX.Зміна стану набору даних
- •XX.Фільтрація набору даних
- •XXI.Пошук записів
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 то поточним буде запис, що є наступним після останнього запису що відповідає критерію пошуку.