Набор данных
Перед открытием набора данных необходимо установить тип используемой при редактировании записей блокировки. Для этого применяется свойство
type TADOLockType = (ItUnspecified, ItReadOnly, ItPessimistic, ItOptimistic, ItBatchOptimistic); property LockType: TADOLockType;
ItUnspecified — блокировка задается источником данных, а не компонентом;
ItReadOnly — набор данных откроется в режиме только для чтения;
ItPessimistic — редактируемая запись блокируется на все время редактирования до момента сохранения в хранилище данных;
ItOptimistic — запись блокируется только на время сохранения изменений в хранилище данных;
ItBatchOptimistic — запись блокируется на время сохранения в хранилище данных при вызове метода updateBatch.
Примечание
Для того чтобы установка блокировки сработала, свойство LockType должно быть обязательно модифицировано до открытия набора данных.
Набор данных открывается методом Open и закрывается методом close. Также можно использовать свойство
property Active: Boolean;
Текущее состояние набора данных можно определить свойством
type
TObjectState = (stClosed, stOpen, stConnecting, stExecuting, stretching);
TObjectStates = set of TObjectState;
property RecordsetState: TObjectStates;
Набор данных в компонентах ADO основан на использовании объекта набора записей ADO, прямой доступ к этому объекту возможен при помощи свойства
property Recordset: _Recordset;
Но поскольку все основные методы интерфейсов объекта набора записей ADO перекрыты методами класса, в обычных случаях прямой доступ к объекту вам не понадобится. После обновления набора данных вызывается метод-обработчик
TRecordsetEvent = procedure(DataSet: TCustomADODataSet; const Error: Error;
var EventStatus: TEventStatus) of object; property OnFetchComplete: TRecordsetEvent;
где Error — ссылка на объект ошибки ADO, если она возникла.
Если же набор данных работает в асинхронном режиме, при обновлении вызывается метод-обработчик
TFetchProgressEvent = procedure(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer;
var EventStatus: TEventStatus) of object;
property OnFetchProgress: TFetchProgressEvent;
где параметр Progress показывает долю выполнения операции.