property RecordsetState: TObjectStates;
Набор данных в компонентах ADO основан на использовании объекта набора записей ADO, прямой доступ к этому объекту возможен при помощи свойства
property Recordset: _Recordset ;
Но поскольку все основные методы интерфейсов объекта набора записей ADO перекрыты методами класса, в обычных случаях прямой доступ к объекту вам не понадобится.
После обновления набора данных вызывается метод-обработчик
TEecordsetEvent = procedure(DataSet: TCustomADODataSet;
const Error: Error;
var Eventstatus: TEventStatus) of object;
property OnFetchComplete: TEecordsetEvent;
где Error - ссылка на объект ошибки ADO, если она возникла.
Если же набор данных работает в асинхронном режиме, при обновлении вызывается метод-обработчик
TEetchProgressEvent = procedure(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer;
var EventStatus: TEventStatus) of object;
property OnFetchProgress: TEetchProgressEvent;
где параметр Progress показывает долю выполнения операции.
Курсор набора данных
Для набора данных ADO в зависимости от его назначения можно выбрать тип и местоположение используемого курсора.
Местоположение курсора задается свойством
type TCursorLocation = (clUseServer, clUseClient);
property CursorLccation: TQrrsorLccation;
Курсор может находиться на сервере (clUseServer) или на клиенте (clUseClient).
□ Серверный курсор используется при работе с большими наборами данных, которые нецелесообразно пересылать клиенту целиком. При этом несколько снижается скорость работы клиентского набора данных.
□ Клиентский курсор обеспечивает передачу набора данных клиенту. Это положительно сказывается на быстродействии, но такой курсор разумно использовать только для небольших наборов данных, не загружающих канал связи с сервером.
При использовании клиентского курсора необходимо дополнительно установить свойство
TMarshalOption = {moMarshalAll, moMarshalModifiedOnly); property MarshalOptions: TmarshalOption которое управляет обменом данных клиента с сервером. Если соединение с сервером быстрое, можно использовать значение moMarshalAll, разрешающее возврат серверу всех записей набора данных. В противном случае для ускорения работы компонента можно применить свойство moMarshalModifiedOnly, обеспечивающее возврат только модифицированных клиентом записей.
Тип курсора определяется свойством
TCursorType = (cfflnspecified, ctOpenForwardOnly, ctKeyset, ctDynamic, ctStatic);
property CursorType: TCursorType;
ctUnspecified - курсор не задан, тип курсора определяется возможностями источника данных;
ctOpenForwardOnly - однонаправленный курсор, допускающий перемещение только вперед;
используется при необходимости быстрого одиночного прохода по всем записям набора данных;
ctKeyset - двунаправленный локальный курсор, не обеспечивающий просмотр добавленных и удаленных другими пользователями записей;
ctDynamic - двунаправленный курсор, отображает все изменения, требует наибольших затрат ресурсов;
ctstatic - двунаправленный курсор, полностью игнорирует изменения, внесенные другими пользователями.