|
Отчет "один-ко-многим"
При помощи средств Rave Reports можно
создавать и более сложные отчеты. В приложениях баз
данных очень часто используются отношения "один-ко-многим"
между наборами данных.
Давайте посмотрим, как создать отчет
"один-ко-многим". Само собой, он должен быть
связан как минимум с двумя просмотрами, которые находятся
в отношении "один-ко-многим".
Для компонентов наборов данных в Delphi
не нужно создавать отношение "один-ко-многим"—
речь идет о том, что их поля позволяют такое отношение
создать теоретически.
Подобно рассмотренному выше простому
отчету, отчет "один-ко-многим" может содержать
полосы Band и DataBand.
Причем дополнительные настройки необходимы для обоих
типов полос. Число полос DataBand
должно соответствовать числу используемых в отчете наборов
данных. Полосы Band несут в основном
оформительскую нагрузку, и их число зависит от эскиза
отчета и вашей фантазии.
В качестве примера создадим отчет для
двух таблиц из демонстрационной базы данных Delphi.
Таблицы CUSTOMER и
ORDERS находятся в отношении "один-ко-многим".
Для них в тестовом приложении создано соединение с использованием
ADO, и два табличных компонента ADO подключены r компонентам
соединения TRvDataSetConnection.
Соответственно полоса данных
CustBand будет отображать записи из набора данных
tCustomer, а полоса
ordBand — из набора данных torders
(рис. 26.6). Их необходимо связать с объектами прямых
просмотров, как уже описывалось выше для примера простого
отчета.
Рис. 26.6. Страница
отчета MasterDetailReport в визуальной
среде Rave Reports
А теперь займемся созданием отношения
"один-ко-многим".
В подчиненной полосе данных
ordBand необходимо задать значения для четырех
свойств.
- Свойство controllerBand должно
содержать ссылку на главную полосу CustBand.
- Свойство MasterDataview должно
содержать ссылку на главный объект просмотра CustomersView.
- В свойстве MasterKey необходимо
задать ключевое поле custNo главного просмотра CustomersView,
по которому будет установлено отношение.
- В свойстве DetailKey необходимо
задать ключевое поле CustNo подчиненного просмотра
Ordersview, по которому будет установлено отношение.
Кроме этого, необходимо настроить атрибуты
местоположения полос на странице отчета. Для этого используется
Редактор полос отчета Band Style Editor (рис.
26.7), который открывается при щелчке на кнопке свойства
Bandstyle Инспектора объектов
визуальной среды Rave Reports. В нем в группе Print
Location для подчиненной полосы
ordBand необходимо установить флажок Detail.
Рис. 26.7. Редактор
полос отчета Band Style Editor для отчета MasterDetailReport
На этом настройка отношения "один-ко-многим"
завершена. Однако скажем еще несколько слов об использовании
обычных полос при оформлении такого рода отчетов. В
нашем примере две дополнительные полосы
OrdHeaderBand и OrdFooterBand
помогают визуально выделить группы записей подчиненной
полосы. Для этого необходимо в их свойстве controiierBand
выбрать полосу данных OrdBand.
Затем в редакторе полос отчета в группе Print Location
для полосы OrdHeaderBand
необходимо выбрать флажок Body Header (В), а
для полосы OrdFooterBand — флажок
Body Footer (b).
Обратите внимание (см. рис. 26.6 и
26.7), что значки маркировки на полосах страницы и в
редакторе полос наглядно демонстрируют текущий статус
полосы. Цветом выделены уровни вложения данных и подчиненность
полос. Полосы с маркировкой одного цвета печатаются
в одном блоке. Квадраты обозначают полосы данных, а
треугольники — обычные полосы, при этом направление
вершины треугольника обозначает полосу заголовка или
окончания. Левая панель редактора полос отчета Band
Style Editor (рис. 26.7) наглядно демонстрирует
модель отчета, как если бы он был напечатан для трех
записей набора данных.
На основе отчета "один-ко-многим"
можно легко разработать и более сложные отчеты. Для
этого необходимо детальную полосу данных связать с новыми
детальными полосами и настроить по описанной методике
отношение "один-ко-многим".
|