Programming: Delphi


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



Курсор набора данных



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

    type TCursorLocation = (clUseServer, clUseClient); property CursorLocation: TCursorLocation;

Курсор может находиться на сервере (CIUseServer) или на клиенте (CIUseClient).

  •  Серверный курсор используется при работе с большими наборами данных, которые нецелесообразно пересылать клиенту целиком. При этом несколько снижается скорость работы клиентского набора данных.
  •  Клиентский курсор обеспечивает передачу набора данных клиенту. Это положительно сказывается на быстродействии, но такой курсор разумно использовать только для небольших наборов данных, не загружающих канал связи с сервером.

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

    TMarshalOption = (moMarshalAll, moMarshalModifiedOnly); property MarshalOptions: TmarshalOption

которое управляет обменом данных клиента с сервером. Если соединение с сервером быстрое, можно использовать значение moMarshalAll, разрешающее возврат серверу всех записей набора данных. В противном случае для ускорения работы компонента можно применить свойство moMarshalModifiedOnly, обеспечивающее возврат только модифицированных клиентом записей.

Тип курсора определяется свойством

    TCursorType = (ctUnspecified, CtOpenForwardOnly, ctKeyset, ctDynamic,

    ctStatic);

    property CursorType: TCursorType;

ctunspecified — курсор не задан, тип курсора определяется возможностями источника данных;

ctOpenForwardOnly — однонаправленный курсор, допускающий перемещение только вперед; используется при необходимости быстрого одиночного прохода по всем записям набора данных;

ctKeyset — двунаправленный локальный курсор, не обеспечивающий просмотр добавленных и удаленных другими пользователями записей;

 ctDynamic — двунаправленный курсор, отображает все изменения, требует наибольших затрат ресурсов;

ctStatic — двунаправленный курсор, полностью игнорирует изменения, внесенные другими пользователями.

Примечание

    Если курсор расположен на клиенте (CursorType = ciusedient), то для него доступен только один тип — ctStatic.

Соответственно до и после каждого перемещения курсора в наборе данных вызываются методы - обработчики:

    TRecordsetReasonEvent = procedure(DataSet: TCustomADODataSet;

    const Reason: TEventReason; 

    var EventStatus: TEventStatus) of object;

    property OnWillMove: TRecordsetReasonEvent;

и

    TP.ecordsetErrorEvent = procedure(DataSet: TCustomADODataSet; const --eason: TEventReason;

    const Error: Error; var EventStatus: TEventStatus) if object; 

    property OnMoveComplete: TRecordsetErrorEvent;

где параметр Reason позволяет узнать, какой метод вызвал это перемещение.




Назад | Оглавление | Вперёд




При перепечатке любого материала с сайта, видимая ссылка на источник www.warayg.narod.ru и все имена, ссылки авторов обязательны.

© 2005
 

Hosted by uCoz