Вычисление значения проводится только для тех агрегатных полей, свойство property Active: Boolean;

которых имеет значение True.

Вычисление включенных свойством Active агрегатных полей выполняется только в том случае, если булевское свойство AggregatesActive клиентского компонента набора данных имеет значение True.

По умолчанию экземпляр класса TAggregateFieid создается со свойством

Visible = False.

Группировка и использование индексов

Каждый агрегат (объект или поле) имеет свойство

property GroupingLevel: Integer;

которое задает уровень группировки полей набора данных при вычислении. При значении 0 расчет проводится для всех записей набора данных. При значении 1 записи группируются по первому полю набора данных и расчет осуществляется для каждой группы. При значении 2 записи разбиваются на группы по первому и второму полям и т. д.

Однако группировка по уровням выше нулевого возможна, только если в наборе данных используется индекс по группирующим полям. Например, еСЛИ (ЖМСГЮ GroupingLevel = 2 И Набор даРШЬГХ начинается С ПОЛеЙ CustNo И OrderNo, В свойстве IndexName компонента TClientDataSet И СЮЙСТВг

property IndexName: String;

агрегата (объекта или поля) должно быть имя индекса, включающего оба эти поля.

Вложенные наборы данных

В гл. 14 рассматривался вопрос организации между таблицами отношения "один-ко-многим", когда через одинаковое значение поля внешнего ключа одна запись главной таблицы связывается с несколькими записями подчиненной таблицы. Этот широко распространенный в практике программирования приложений БД механизм реализован и в компоненте TClientDataSet. ДЛЯ ЭТОГО ИСПОЛЬЗУЮТСЯ класс ПОЛЯ TDataSetField.

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

Итак, на стороне сервера есть два табличных компонента, связанных отношением 'ОДИН-КаМНОгаМ" при ШШЩ СКЖЗВ MasterSource И MasterFields (см. гл. 14). Также это могут быть и два компонента запросов SQL, связанные параметрами подчиненного запроса с одноименными полями главного запроса И (Ж)ЙСТЮМ DataSource.

Теперь на стороне клиента необходимо при помощи компонента-провайдера связать компонент TClientDataSet с главным серверным компонентом отношения "один-ко-многим" и создать для него статические объекты для всех полей. Для этого достаточно дважды щелкнуть на компоненте и в окне Редактора полей (см. рис. 22.3) из всплывающего меню выбрать пункт Add Field. В результате в окне Редактора полей появятся имена объектов для всех полей серверного набора данных, а также еще одно дополнительное поле объектного типа TDataSetFieid. Его имя совпадает с именем подчиненного серверного компонента отношения "один-ко-многим".

Это поле связано с подчиненным компонентом на сервере. Чтобы убедиться в этом, достаточно просмотреть значение его свойства только для чтения

property NestedDataSet: TDataSet;

Индексированный список всех полей, передаваемых из серверного подчиненного компонента, содержится в свойстве только для чтения


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

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



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

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