ВУЗ:
Составители:
Рубрика:
27
В отличие от критерия в строке Filtered, ограниченного рамками синтаксиса условного
выражения, критерий, реализуемый в обработчике события OnFilterRecord, определяется
синтаксисом Object Pascal и может реализовывать сложные алгоритмы фильтрации. Однако
следует помнить о том, что в обработчике OnFilterRecord последовательно перебираются все
записи набора данных. Это делает использование обработчика OnFilterRecord
предпочтительным для фильтрации небольших объемов записей и сильно ограничивает его
применение при больших объемах.
Всякий раз, когда приложение обрабатывает событие OnFilterRecord, набор данных
переводится из состояния dsBrowse в состояние dsFilter. Это предотвращает модификацию
набора данных во время фильтрации. После завершения текущего вызова обработчика
события OnFilterRecord набор данных переводится в состояние dsBrowse.
Чтобы создать набор данных из тех записей таблицы «Сотрудники», в которых поле
Doljnost содержит значение «доцент», можно использовать такой обработчик:
procedure TForml.Table2FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := DataSet ['Doljnost' ] = 'профессор';
end;
Чтобы отфильтровать таблицу «Сотрудники» по условию «Отобрать всех сотрудников,
у кого табельные номера (поле TabNum) больше значения, вводимого пользователем в поле
редактирования Edit1, и в поле FIO есть подстрока символов, вводимых пользователем в
Edit2»:
procedure TForml.Table2FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := (DataSet['TabNum'] > Edit1.Text)) and (Pos(Edit2.Text,DataSet['FI O ' ]) > 0);
end;
Если в строке Filter и в обработчике события OnFilterRecord заданы разные критерии
фильтрации, выполняются оба.
2. . Используя таблицы из базы данных DBDEMOS создать приложение, в котором
создать пример фильтрации записей с помощью cобытия OnFilterRecord.
Методы FindFirst, FindLast, FindNext, FindPrior позволяют перемещаться в
неотфильтрованном наборе данных (Filtered = False) между записями, удовлетворяющими
условию фильтрации. Условие фильтрации задается событием OnFilterRecord и/или
свойством Filter. Действие методов таково: они ненадолго переводят набор данных в
отфильтрованное состояние (Filtered = True) без визуализации этой фильтрации в TDBGrid
или другом подобном визуальном компоненте, находят соответствующую запись и переводят
набор данных обратно в неотфильтрованное состояние (Filtered = False). Если искомая
запись найдена, методы возвращают True, в противном случае - False.
В отличие от этих методов, методы First, Last, Next и Prior учитывают критерий
фильтрации, только если набор данных находится в отфильтрованном состоянии (свойство
Filtred содержит True).
3. . Используя таблицы из базы данных DBDEMOS создать приложение, в котором
организовать навигацию в неотфильтрованном наборе данных между записями,
удовлетворяющими фильтру.
В отличие от критерия в строке Filtered, ограниченного рамками синтаксиса условного выражения, критерий, реализуемый в обработчике события OnFilterRecord, определяется синтаксисом Object Pascal и может реализовывать сложные алгоритмы фильтрации. Однако следует помнить о том, что в обработчике OnFilterRecord последовательно перебираются все записи набора данных. Это делает использование обработчика OnFilterRecord предпочтительным для фильтрации небольших объемов записей и сильно ограничивает его применение при больших объемах. Всякий раз, когда приложение обрабатывает событие OnFilterRecord, набор данных переводится из состояния dsBrowse в состояние dsFilter. Это предотвращает модификацию набора данных во время фильтрации. После завершения текущего вызова обработчика события OnFilterRecord набор данных переводится в состояние dsBrowse. Чтобы создать набор данных из тех записей таблицы «Сотрудники», в которых поле Doljnost содержит значение «доцент», можно использовать такой обработчик: procedure TForml.Table2FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept := DataSet ['Doljnost' ] = 'профессор'; end; Чтобы отфильтровать таблицу «Сотрудники» по условию «Отобрать всех сотрудников, у кого табельные номера (поле TabNum) больше значения, вводимого пользователем в поле редактирования Edit1, и в поле FIO есть подстрока символов, вводимых пользователем в Edit2»: procedure TForml.Table2FilterRecord(DataSet: TDataSet; var Accept: Boolean); begin Accept := (DataSet['TabNum'] > Edit1.Text)) and (Pos(Edit2.Text,DataSet[' F I O ' ]) > 0); end; Если в строке Filter и в обработчике события OnFilterRecord заданы разные критерии фильтрации, выполняются оба. 2. . Используя таблицы из базы данных DBDEMOS создать приложение, в котором создать пример фильтрации записей с помощью cобытия OnFilterRecord. Методы FindFirst, FindLast, FindNext, FindPrior позволяют перемещаться в неотфильтрованном наборе данных (Filtered = False) между записями, удовлетворяющими условию фильтрации. Условие фильтрации задается событием OnFilterRecord и/или свойством Filter. Действие методов таково: они ненадолго переводят набор данных в отфильтрованное состояние (Filtered = True) без визуализации этой фильтрации в TDBGrid или другом подобном визуальном компоненте, находят соответствующую запись и переводят набор данных обратно в неотфильтрованное состояние (Filtered = False). Если искомая запись найдена, методы возвращают True, в противном случае - False. В отличие от этих методов, методы First, Last, Next и Prior учитывают критерий фильтрации, только если набор данных находится в отфильтрованном состоянии (свойство Filtred содержит True). 3. . Используя таблицы из базы данных DBDEMOS создать приложение, в котором организовать навигацию в неотфильтрованном наборе данных между записями, удовлетворяющими фильтру. 27
Страницы
- « первая
- ‹ предыдущая
- …
- 25
- 26
- 27
- 28
- 29
- …
- следующая ›
- последняя »