50
нент TStoredProc инкапсулирует хранимые процедуры на SQL-сервере. В
этой главе для ясности изложения компонент ТТаblе будет использоваться
всякий раз, когда речь пойдет о наборах данных. Компонент TQuery детально
рассматривается несколько позже.
5.2 Кэширование изменений
По умолчанию все изменения в наборе данных, завершаемые методами
Post, Insert, Delete и т.п., заносятся в базу данных. Однако, возможен и дру-
гой режим работы, при котором все изменения, вносимые пользователем в
записи, кэшируются — т.е. сохраняются в памяти локально. В этом случае
пользователь работает не с реальными данными, а с их копиями. И только по
специальной команде все внесенные пользователем изменения заносятся в
базу данных.
Режим кэширования определяется свойством CachedUpdates компо-
нента Table. По умолчанию это свойство равно false и кэширование не про-
изводится. Если установить его в true, то все изменения набора данных будут
кэшироваться. Они передаются в базу данных только после выполнения ме-
тода Apply -Updates. Если же после множества изменений выполнить метод
CancelUpdates, то все изменения, произведенные после последнего выпол-
нения ApplyUpdates, отменяются.
Метод CommitUpdates очищает буфер кэша, после чего он готов для
приема новой порции информации.
Проверьте это, построив простое приложение, вид которого показан на
рис. 9.43. Индикатор Кэширование переключает режим кэширования. Кнопка
Фиксация фиксирует все сделанные изменения в базе данных. Кнопка Отме-
на отменяет сделанные изменения. Когда приложение закрывается, надо про-
верить, не работало ли оно в режиме кэширования и не было ли сделано из-
менений, которые не зафиксированы в базе данных. Если были, то следует
спросить пользователя о необходимости их сохранения и при положительном
ответе зафиксировать изменения.
Коды этого приложения очень простые. Для таблицы Tablel свойство
CachedUpdates первоначально надо задать равным true. В приложение мож-
но ввести переменную modif, которая будет фиксировать наличие не сохра-
ненных изменений. Ее можно объявить как типизированную константу: