|
Фильтрация
Помимо обычной фильтрации , основанной
на свойствах Filter, Filtered
и методе-обработчике onFilterRecord,
класс TCustomADODataSet предоставляет
разработчику дополнительные возможности.
Свойство
TFilterGroup = (fgUnassigned,
fgNone, fgPendingRecords, fgAffectedRecords, fgFetchedRecords,
fgPredicate, fgConflictingRecords);
property FilterGroup:
TFilterGroup;
задает групповой фильтр для записей,
основываясь на информации о состоянии каждой записи
набора данных, подобно рассмотренному выше свойству
RecordStatus.
Фильтрация возможна по следующим параметрам:
- fgUnassigned.— фильтр не задан;
- fgNone — все ограничения, заданные
фильтром, снимаются, отображаются все записи набора
данных;
- fgPendingRecords — отображаются
измененные записи, несохраненные в хранилище данных
при вызове метода updateBatch или cancelBatch;
- fgAffectedRecords — показываются
записи, обработанные при последнем сохранении в хранилище
данных;
- fgFetchedRecords — имеем записи,
полученные при последнем обновлении из источника данных;
- fgPredicate — видны только
удаленные записи;
- fgConfiictingRecords — отображаются
модифицированные записи, при сохранении которых в
хранилище данных возникла ошибка.
Для того чтобы групповая фильтрация
заработала, необходимы два дополнительных условия. Во-первых,
фильтрация должна быть включена — свойство
Filtered должно иметь Значение True.
Во- вторых , свойство LockType
должно иметь значение ItBatchOptimistic.
with ADODataSet do
begin
Close;
LockType := ItbatchOptimistic;
Filtered := True;
FilterGroup := fgFetchedRecords;
Open;
end;
Метод
procedure FilterOnBookmarks(Bookmarks:
array of const);
включает фильтрацию по существующим
закладкам. Для этого предварительно необходимо при помощи
метода GetBookmark установить
закладки на интересующих записях. При вызове метода
FilterOnBookmarks автоматически
очищается свойство Filter, а свойству
FilterGroup присваивается значение
gUnassigned.
|