где rsOK - запись успешно сохранена; rsNew - запись добавлена; rsModified - запись была изменена; rsDeleted - запись удалена; rsUnmodified - запись без изменений; rslnvalid - запись не может быть сохранена из-за неверной закладки; rsMultipleChanges - запись не может быть сохранена из-за множественных изменений; rsPendingChanges - запись не может быть сохранена из-за ссылки на несохраненные изменения; rsCanceled - операция с записью была отменена; rsCantRelease - запись заблокирована; rsConcurrencyViolation - запись не может быть сохранена из-за типа блокировки; rsIntegrityViolation - нарушена ссылочная целостность; rsMaxChangesExceeded - ОИШОМ МШО изменений; rsObjectOpen - конфликт с объектом базы данных; rsOutOfMemory - недостаток памяти, rsPermissionDenied - нет доступа; rsSchemaViolation - нарушение структуры данных; rsDBDeleted - запись удалена в БД.

Как видите, благодаря этому свойству состояние отдельной записи может быть определено очень точно.

Кроме этого, метод

type

TUpdateStatus = (usUnmodified, usModified, uslnserted, usDeleted);
function UpdateStatus: TUpdateStatus;
override;

возвращает информацию о состоянии текущей записи.

Соответственно до и после изменения записи вызываются методы-обработчики

TWillChangeRecordEvent = procedure(DataSet: TCustomADODataSet;
const Reason: TEventReason;
const RecordCount: Integer;
var Eventstatus: lEventStatus) of object;

property OnWillChangeRecord: TWillChangeRecordEvent; И

TRecordChangeCompleteEvent = procedure (DataSet: TCustoniADODataSet;
const Reason: TEventReason;
const RecordCount: Integer;
const Error: Error;
var Eventstatus: lEventStatus) of object;
property OnRecordChangeComplete: TrecordChangeCompleteEvent;

где параметр Reason позволяет узнать, какой метод изменил записи, а параметр RecordCount возвращает число измененных записей.

Фильтрация

Помимо обычной фильтрации, основанной на свойствах Filter, Filtered и методе-обработчике OnFilterRecord, класс TCustomADODataSet предоставляет разработчику дополнительные возможности.

Свойство

lEilterGroup = (fgUnassigned, fgNone, fgPendingRecords,

fgAf fectedRecords, fgFetchedRecords, fgRredicate, fgConflictingRecords) ;
property FilterGroup: lEilterGroip;

задает групповой фильтр для записей, основываясь на информации о состоянии каждой записи набора данных, подобно рассмотренному выше свойству RecordStatus.

Фильтрация возможна по следующим параметрам: • fgUnassigned - фильтр не задан;
□
%None - все ограничения, заданные фильтром, снимаются, отображаются все записи набора данных;
О fgPendingRecords - отображаются измененные записи, несохраненные в хранилище данных при вызове метода updateBatch или cancelBatch;
О fgAffectedRecords- показываются записи, обработанные при последнем сохранении в хранилище данных;
П fgFetchedRecords - имеем записи, полученные при последнем обновлении из источника данных;
• fgPredicate - видны только удаленные записи;

OfgConflictirigRecords - отображаются модифицированные записи, при сохранении которых в хранилище данных возникла ошибка.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс