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

Компонент TClientDataSet. Получение данных от компонента – провайдера.

Компонент TclientDataSet используется в клиентской части многозвенного распределенного приложения. Он инкапсулирует набор данных, переданный при помощи компонента-провайдера из удаленного набора данных. Компонент обеспечивает выполнение следующих основных функций:

  • получение данных от удаленного сервера и передача ему сделанных изменений с использованием удаленного компонента-провайдера;
  • представление набора данных при помощи локального буфера и поддержка основных операций, унаследованных от класса TDataSet;
  • объединение записей набора данных при помощи агрегатных функций для получения суммарных данных;
  • локальное сохранение набора данных в файле и последующее восстановление набора данных из файла;
  • представление набора данных в формате XML.

Предком компонента TclientDataSet является класс TDataSet, поэтому TclientDataSet обладает таким же набором функций, что и обычный компонент, инкапсулирующий набор данных. Основное же отличие заключается в том, источник данных для него доступен только через удаленный компонент-провайдер. Это означает, что сохранение изменений и обновление набора данных осуществляется локально, без обращения к источнику данных.

Например, выполнение метода Post приведет лишь к сохранению текущей записи набора данных в локальном кэше. Все изменения отсылаются на сервер только при необходимости и легко управляются разработчиком.

Как и обычный компонент, компонент TclientDataSet может использоваться совместно с визуальными компонентами отображения данных. Для этого нужен компонент TDataSource.

Рассмотрим основные функции, реализуемые компонентом TclientDataSet.

Получение данных от компонента – провайдера

Компонент TClientDataSet получает доступ к удаленным данным через компонент соединения DataSnap (см. гл. 20). В зависимости от используемой технологии, это могут быть технологии TDCOMConnection, TSocketConnection, TWebConnection или TCorbaConnection.

Компонент TClientDataSet связывается с компонентом соединения при помощи свойства:

property RemoteServer: TCustomRemoteServer;

Если соединение настроено правильно, то ссылка на интерфейс IAppServer в свойстве:

property AppServer: IAppServer;

…совпадает со свойством:

ClientDataSet.RemoteServer.AppServer;

После настройки соединения в свойстве:

property ProviderName: string;

…можно выбрать один из компонентов-провайдеров, которые доступны на сервере приложений, выбранном в компоненте соединения.

Если провайдер был подключен правильно, свойство только для чтения:

property HasAppServer: Boolean;

…автоматически принимает значение True.

Теперь компонент готов к приему данных. При использовании метода:

procedure Open;

…или свойства:

property Active: Boolean;

…компонент получает от провайдера первый пакет данных.

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