Порядок построения
В этой статье рассмотрим порядок построения бэндов отчета, а также определим их взаимосвязь для первого уровня вложенности. Под первым уровнем вложенности подразумевается, что в отчете будет отсутствовать иерархия, т.е. только простые списки, только простые группировки и т.д. Все бэнды можно разделить на следующие типы:
Бэнды страницы (Заголовок страницы (Page Header) и Итог страницы (Page Footer)), Водяной знак (Overlay) - эти бэнды взаимосвязаны со страницами отчета, и выводятся на каждой странице отчета;
Бэнды отчета (Заголовок отчета (Report Title) и Итог отчета (Report Summary)). Как понятно из их названия, эти бэнды взаимосвязаны с самим отчетом и предназначены для вывода заголовка и итога по отчету. Выводятся только один раз.
Бэнды для вывода списка данных: Данные (Data Band), Дерево (Hierarchical). Далее, по тексту будет упоминаться бэнд Данные (Data Band), в тоже время подразумевая, что вместо него может использоваться и бэнд Дерево (Hierarchical);
Бэнды, связанные с бэндом Данные (Заголовок данных (Header Band), Итог данных (Footer Band), Заголовок группы (Group Header Band), Итог группы (Group Footer Band), Заголовок колонки (Column Header Band), Итог колонки (Column Footer Band), Пустые данные (Empty Band)).
Бэнд Подчиненный (Child).
При построении отчета все бэнды выводятся в строго определенном порядке. Это связано с тем, что каждый бэнд выполняет определенную функцию в отчете. И очень важен порядок, в котором будут выводится на печать бэнды.
Бэнд Подчиненный (Child) может располагаться под любым бэндом, кроме Заголовок страницы (Page Header), Итог отчета (Report Summary), Итог страницы (Page Footer). На рисунке снизу представлена страница шаблона отчета с расположением бэндов:
|
При построении отчета, страницы шаблона обрабатываются последовательно. Порядок обработки страницы определяется положением страницы в дереве отчета. Чем выше страница в дереве отчета, тем выше её приоритет (т.е. очередность) на обработку:
Для дерева отчетов на рисунке выше, порядок обработки страниц будет следующим: сначала будет обработана страница шаблона Page1, затем Page5, за ней Page4, далее Page3, и наконец последней будет Page2. Допустим на Page1 расположены все бэнды (см. пример страницы шаблона отчета с расположением бэндов выше). В этом случае, бэнды будут обрабатываться в несколько этапов:
На первом этапе проивзодится предварительный анализ всех бэндов страницы и выделение следующих бэндов PageHeaderBand1, PageFooterBand1 и OverlayBand1. Эти бэнды будут всегда в первую очередь обрабатываться и добавляться на каждую новую страницу в построенном отчете. Также, на первую страницу построенного отчета будет также добавлен бэнд ReportTitleBand1.
На втором этапе производится анализ остальных бэндов.
После анализа, будет начато построение отчета. Последним будет обработан ReportSummaryBand1.
|
Как уже было сказано выше, все бэнды (кроме PageHeaderBand1, PageFooterBand1, OverlayBand1, ReportTitleBand1, ReportSummaryBand1) при построении отчета зависят от бэнда DataBand1. Рассмотрим эти взаимосвязи более подробно и начнем с простого примера. На странице шаблона отчета лежит бэнд Данные (Data Band):
Количество записей в источнике данных равно пяти, и это значит, что бэнд Данные будет напечатан 5 раз в построенном отчете:
Почти все бэнды можно разделить на две категории: Заголовки и Итоги, т.е. для каждого типа заголовков существует итог этого же типа. Например, для заголовка групп - есть итог групп, для заголовка данных - есть итог данных и т.д.
Рассмотрим пример. Допустим на странице один бэнд Данные, два его заголовка и два его итога:
Порядок расположения бэндов на странице, в направлении сверху вниз:
В этом случае, бэнду HeaderBand3 будет соответствовать FooterBand2, а бэнду HeaderBand2 - FooterBand3. Иначе говоря, первому заголовоку от бэнда Данные (двигаем вверху) соответствует первый итог от бэнда Данные (двигаемся вниз). Ниже представлен пример построенного отчета:
Часто бывает, что количество заголовков и итогов определенного типа, разное количество. Например, изменим пример выше, добавив HeaderBand4 между HeaderBand2 и DataBand2. теперь заголовку HeaderBand4 соответствует итог FooterBand3 (цвет - желтый), HeaderBand2 - FooterBand2 (цвет - бирюзовый), а вот бэнд HeaderBand3 (цвет синий) без итога.:
Для примера выше, уровняем количество заголовков и итогов данных:
В этом случае, HeaderBand4 соответствует FooterBand3 (цвет - желтый), HeaderBand2 - FooterBand4 (цвет - бирюзовый), HeaderBand3 (цвет - синий) - FooterBand2 (нулевая высота). При этом, в построенном отчете FooterBand4 печататься (отображаться) не будет:
Таким образом, в шаблоне отчета равное количество заголовков и итогов, и легко определить их соответствие. В тоже время, можно выключать (т.е. не отображать) определенные бэнды. Все примеры выше были рассмотрены для бэндов Заголовок данных (Header Band) и Итог данны (Footer Band). Такой же принцип соответствия относится и к бэндам Заголовок группы (Group Header Band), Итог группы (Group Footer Band), Заголовок колонки (Column Header Band), Итог колонки (Column Footer Band).
Теперь рассмотрим пример, когда в шаблоне отчета несколько бэндов данные:
Эти бэнды не имеют связи между собой. Поэтому обрабатываться они будут последовательно. Сначала будет обработан бэнд DataBand1 (список категорий), затем - DataBand2 (список продуктов):
Теперь добавим в шаблон отчета бэнд Заголовок данных (Header Band). Бэнд Заголовок отчета будет относиться к тому бэнду Данные, над которым он непосредственно расположен. Для того чтобы бэнд Заголовок данных (HeaderBand1) относился к DataBand1 (список категорий), его необходимо размещать выше этого бэнда Данные:
Для того чтобы бэнд Заголовок данных(HeaderBand2) относился к DataBand2 (список продуктов), его необходимо размещать непосредственно над этим бэндом Данные:
И тогда первая страница построенного отчета будет следующего вида:
Теперь рассмотрим взаимодействие итогов в отчете с несколькими бэндами Данные. Как уже говорилось выше, итоги в шаблоне отчета относится к тому бэнду Данные, ниже которого они непосредственно расположены. При этом, бэнд Итог данных (Footer Band) является закрывающим к бэнду Заголовок данных (Header Band). Допустим, необходимо вывести итог по количеству категорий. В этом случае, Итог данных (FooterBand1) должен располагаться ниже бэнда Данные со списком категорий, но выше HeaderBand2 для списка продуктов:
Страница построенного отчет будет следующего вида:
Для того чтобы вывести итог по бэнду Данные со списком продуктов, Итог данных (FooterBand2) необходимо разместить ниже DataBand2. Для данного примера рассчитаем итоговую стоимость всех продуктов, используя функцию Sum. Результат будет выводиться на каждой странице отчета (для этого установим флажок у свойства Печатать на всех страницах (Print on All Pages)). Ниже представлена страница шаблона отчета с итогом по бэнду Данные со списком продуктов:
И тогда первая страница построенного отчета будет следующего вида:
Такой же принцип взаимодействия распостраняется и на бэнды Заголовок группы (Group Header Band), Итог группы (Group Footer Band), Заголовок колонки (Column Header Band), Итог колонки (Column Footer Band). Еще раз коротко о взаимодействии бэндов: Заголовки располагаются выше бэнда Данные (Data Band), к которому они относятся, а Итоги ниже. Сами по себе заголовки и итоги печататься не могут, т.к. они должны относится к какому-либо бэнду Данные. Следите за количеством заголовков и итогов, особенно в отчетах с группировками. Иногда проще добавить определенный бэнд (заголовок или итог), чтобы уровнять их количество и четко проследить соответствие. Установите нулевую высоту бэнда в шаблоне отчета, если требуется не отображать его в построенном отчете.
|