Для компонента srvrCon предусмотрены два метода-обработчика (см. листинг 22.1) - после подключения и перед отключением соединения. В них открываются и закрываются все наборы данных клиентского приложения.

Теперь в клиентском приложении доступны наборы данных обоих удаленных модулей данных сервера приложений.

Непосредственно подключение к серверу осуществляется кнопкой Соединение. При ее нажатии выполняется следующий простой код:

prœedure TfmMain. tbConnectClick (Sender : TObject) ;

begin try

DM.SrvrCon.Close;
DM.SrvrCon.ComputerName := edServerName.Text ;
DM.SrvrCon.Open;

except

onE: Exception do MessageDlg (E .Message, mtError, [robOK], 0) ;
end;
SetCtrlState;
end;

Соединение закрывается, задается новое имя компьютера сервера, соединение открывается. Специально созданный метод формы setctristate управляет доступностью кнопок формы, анализируя текущее состояние наборов данных.

Наборы данных клиентского приложения

Каждый из компонентов тсИептоатаЭеЬ модуля данных 0атаМоо1и1е связан с соответствующим компонентом-провайдером сервера.

Компонент сскОгёегз предназначен для просмотра данных о заказах. Вспомогательные компоненты сс!зЕтр1оуеез и сс!зСиз1:отегз содержат списки заказчиков и работников, используемые в главном наборе данных. В компоненте сскОгёегз определено агрегатное поле Ра1с13ит, рассчитывающее сумму платежей по всем заказам.

Компонент ссЬзРаЛв предназначен для просмотра и редактирования данных о поступлениях. Компонент сскуепёогз представляет список поставщиков. Так как в сервере приложения связанный с сскуепсюгз набор данных является главным в отношении "один-ко-многим", то одновременно с обычными полями для компонента сскуепёогз автоматически создается поле ЬЫРагтэ типа TDataSetField. Это поле позволяет настроить вложенный набор данных. Для этого достаточно в свойстве ОатаЗеТЕгеШ вложенного компонента сёвРаЛв задать поле г-ЫРа^э. Теперь при перемещении по записям главного набора данных сскуепёогз вложенный набор данных компонента сскРаЛв будет отображать записи, связанные с текущим поставщиком.

В целях сохранения простоты и наглядности исходного кода редактирование предусмотрено только для одного компонента cdsParts. В реальной работе аналогичные методы могут использоваться для всех наборов данных.

Для компонента сскРаЛв созданы два агрегата, суммирующие данные о поступлениях и продажах. При перемещении по записям этого набора данных в методе-обработчике АГхегЭсгоИ предусмотрено обновление значений агрегатов (см. листинг 22.1).

Так как компонент сскРаЛв предназначен и для редактирования данных, то для него необходимо предусмотреть обработку исключительных ситуаций, возникающих не только на клиенте, но и на сервере. Для этого используется метод-обработчик cdsPartsReconcileError (см. листинг 22.1). Сама операция очень проста и скорее служит лишь демонстрацией возможности создавать собственную обработку серверных исключений вместо использования стандартной функции на^1еКесопс11еЕггог (см. рис. 22.4). Здесь все изменения в проблемных записях отменяются методом сапсеидоатеэ и выводится сообщение об ошибке.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Июнь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс