|
Групповые операции
Как уже рассказывалось выше, наборы
данных ADO используют на клиентской стороне локальный
кэш для хранения данных и сделанных изменений. Благодаря
наличию этого кэша и появилась возможность реализовать
групповые операции. В этом режиме все сделанные изменения
не передаются немедленно источнику данных, а накапливаются
в локальном кэше. Это повышает скорость работы и позволяет
сохранять сразу группу модифицированных записей.
Из отрицательных сторон этого метода
стоит отметить, что пока изменения находятся на клиенте,
они недоступны другим пользователям. В данной ситуации
могут возникать потери данных.
Для перевода набора данных в режим
групповых операций необходимо выполнить следующие условия.
- Набор данных должен использовать
клиентский курсор:
ADODataSet.CursorLocation
:= clUseClient;
- Курсор должен иметь тип ctstatic:
ADODataSet.CursorType
:= ctstatic;
- Блокировка должна иметь значение
itBatchoptimistic:
ADODataSet.LockType
:= ItBatchOptimistic;
Для передачи сделанных изменений в
хранилище данных в компонентах ADO используется метод
procedure UpdateBatch(AffectRecords:
TAffectRecords = arAll);
Для отмены всех сделанных, но не сохраненных
методом UpdateBatch изменений
применяется метод
procedure CancelBatch(AffectRecords:
TAffectRecords = arAll);
Используемый в методах тип
TAffectRecords позволяет задать тип записей,
к которым применяется данная операция:
TAffectRecords =
(arCurrent, arFiltered, arAll, arAHChapters);
arcurrent —
операция выполняется только для текущей записи;
arFiltered
— операция выполняется для записей из работающего фильтра;
rAll — операция
выполняется для всех записей;
arAllchapters
— операция выполняется для всех записей текущего набора
данных (включая невидимые из-за включенного фильтра),
а также для всех вложенных наборов данных.
|