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

Компонент TSimpleDataSet

Данные между сервером и компонентом пересылаются пакетами. Доступ к текущему пакету возможен при помощи свойства:

property Data: OleVariant;

Сделанные изменения содержатся в свойстве:

property Delta: OleVariant;

При этом разработчик может регулировать размер пакетов. Например, при ухудшении соединения можно уменьшить размер пакетов. Размер пакета определяется свойством:

property PacketRecords: Integer;

…которое задает число записей в пакете. Автоматическое назначение пакетов включается:

PacketRecords: = -1

Если значение PacketRecords равно 0, между клиентом и сервером пересылаются только метаданные.

Если свойство PacketRecords больше нуля, то необходимо вручную организовывать подкачку данных с сервера. Для этого используется метод:

function GetNextPacket: Integer;

Для организации такой подкачки вполне подойдут методы-обработчики событий:

property BeforeGetRecords: TRemoteEvent;
property AfterGetRecords: TRemoteEvent;

В компоненте TSimpleDataSet развиты средства работы с одиночными записями. Можно просмотреть общее число записей:

property RecordCount: Integer;

…и номер текущей записи:

property RecNo: Integer;

Размер одной записи сохраняется в свойстве:

property RecordSize: Word;

Все изменения, сделанные в текущей записи, отменяются методом:

procedure RevertRecord;

Обновить значение полей для текущей записи с сервера можно методом:

procedure RefreshRecord;

Обработка исключительных ситуаций для компонента TSimpleDataSet состоит из двух этапов.

Во-первых, необходимо отслеживать ошибки на стороне клиента – это могут быть некорректный ввод данных, ошибки кэширования и т. д. В этом случае подходят все стандартные способы, применяемые для наборов данных.

Во-вторых, ошибки могут возникнуть при сохранении изменений на сервере. И поскольку само событие, приведшее к исключительной ситуации, возникает на другом компьютере или в другом процессе, для отслеживания таких ошибок используется специальный метод-обработчик:

TReconcileErrorEvent = procedure(DataSet: TCustomClientDataSet;
E: EReconcileError; UpdateKind: TUpdateKind; var Action: TReconcileAction)
of object; property OnReconcileError: TReconcileErrorEvent;

…который срабатывает, если с сервера пересылается сообщение об ошибке. Информация об ошибке находится в параметре E: EReconcileError.

Более детальная информация о клиентских наборах данных содержится в гл. 22.

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