Иллюстрированный самоучитель по Delphi 7 для профессионалов

Класс TCustomADODataSet. Набор данных.

Класс TCustomADODataSet инкапсулирует механизм доступа к хранилищу данных через ADO. Этот класс наполняет абстрактные методы общего предка TDataSet функциями конкретного механизма доступа к данным.

Поэтому здесь мы рассмотрим только уникальные свойства и методы класса TCustomADODataSet, обеспечивающие работу с ADO.

Соединение набора данных с хранилищем данных ADO осуществляется через компонент TADOConnection (свойство connection) или путем задания параметров соединения через свойство connectionstring (см. выше).

Набор данных

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

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.