Помимо обычной фильтрации , основанной на
свойствах Filter, Filtered и
методе-обработчике onFilterRecord, класс
TCustomADODataSet предоставляет разработчику дополнительные возможности.
задает групповой фильтр для записей, основываясь на информации о состоянии каждой записи набора данных, подобно рассмотренному выше свойству
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.
Знаете ли Вы, что релятивистское объяснение феномену CMB (космическому микроволновому излучению) придумал человек выдающейся фантазии Иосиф Шкловский (помните книжку миллионного тиража "Вселенная, жизнь, разум"?). Он выдвинул совершенно абсурдную идею, заключавшуюся в том, что это есть "реликтовое" излучение, оставшееся после "Большого Взрыва", то есть от момента "рождения" Вселенной. Хотя из простой логики следует, что Вселенная есть всё, а значит, у нее нет ни начала, ни конца... Подробнее читайте в FAQ по эфирной физике.