M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Набор данных

    Перед открытием набора данных необходимо установить тип используемой при редактировании записей блокировки. Для этого применяется свойство

    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 показывает долю выполнения операции.