Отложенные обновления (CachedUpdates).

TMemTableEh может работать в режиме оперативных или отложенных обновлений. Режим обновления определяет, когда будет посылаться информация об измененных записях в компонент TDataDriverEh (при этом TSQLDataDriverEh и TXXXDataDriverEh сразу пошлют изменения на сервер). В режиме оперативного обновления TMemTableEh посылает информацию сразу после добавления записи или вызова метода Post. В режиме отложенного обновления TMemTableEh не посылает информацию об изменениях, а накапливает их в специальном буфере. Когда изменения закончены, приложение посылает кэшированные изменения в TDataDriverEh. Режим отложенного обновления устанавливается свойством CachedUpdates. Основные достоинства отложенных обновлений – это уменьшение количества транзакций, сокращение времени транзакции и минимизация сетевого трафика.

В режиме отложенного обновления изменения сделанные в TMemTableEh не посылаются в TDataDriverEh пока приложение не назовет метод TMemTableEh.ApplyUpdates. ApplyUpdates принимает единственный параметр, MaxErrors, который задает максимальное число ошибок, которое TDataDriverEh должен допустить до отказа процесса изменений. Если MaxErrors - 0, то при первой же ошибке, весь процесс изменений будет отвергнут (Если изменения происходили внутри транзакции). Если MaxErrors = -1, то допустимо любое число ошибок. Записи, обновления которых произошли с ошибками имеют дополнительное свойство UpdateError типа TUpdateErrorEh .

До посылки измененных записей в TDataDriverEh может быть полезным обеспечить отображение состояние изменений записей. Это особенно полезно, если Вы хотите позволить пользователю отменять определенные изменения или отображать тип изменения записи.

Для отображения информации об изменениях можно использовать метод UpdateStatus и свойство StatusFilter:

UpdateStatus указывает тип изменения текущей записи. Оно может возвращать одно из следующего значений:

usUnmodified Указывает, что текущая запись не изменялась.

usModified Указывает, что текущая запись была отредактирована.

usInserted Указывает, что запись была добавлена пользователем.

usDeleted Указывает, что запись была удалена пользователем.

 

StatusFilter определяет записи какого типа видны для навигации. StatusFilter работает с отложенными записями почти так же как работает фильтр в обычных данных. StatusFilter – это набор (Set), так что он может содержать любую комбинацию следующего величин:

usUnmodified Выводить неизмененные записи.

usModified Выводить модифицированные записи.

usInserted Выводить добавленные записи.

usDeleted Выводить удаленные записи.

По умолчанию, StatusFilter имеет значение [usModified, usInserted, usUnmodified]. Вы можете добавить значение usDeleted чтобы увидеть удаленные записи.

RevertRecord – восстанавливает старое состояние записи и значения полей. Если запись бы была добавлена в программе, то она удаляется из списка. Свойство UpdateStatus восстанавливается в значение usUnmodified.

MergeChangeLog – удаляет журнал отложенных изменений. Все добавленные или измененные записи получают статус usUnmodified.

CancelUpdates – отменяет все отложенные изменения и восстанавливает старое состояние записей.