Руководство VisiCAR™ Developer
<< 1.4 Просмотр и печать отчета. Оглавление 1.6 Параметры отчета >>

1.5 Виды отчетов

 Отчет с одним уровнем (список)

Это самый простой вид отчета. Для его создания необходимо разместить на листе бэнд "master data" и поместить в него объекты со ссылками на нужные данные. Бэнд необходимо подключить к источнику данных.

Рис. 1.18.

 

 Отчет с двумя уровнями

Для построения этого отчета необходимо разместить на листе бэнды "master data" и "detail data", затем поместить в них объекты со ссылками на нужные данные. Следует отметить, что таблицы (или запросы), на которых строится такой отчет, должны быть связаны отношением master-detail.

Порядок, в котором бэнды размещаются на листе, не имеет значения — сначала будет напечатана строка из master, потом соответствующие ей строки из detail. Отчет будет формироваться до тех пор, пока есть данные для master. Если надо, чтобы master с его подчиненным списком печатался с нового листа, установите для бэнда флажок "Формировать новую страницу" (FormNewPage). У отчета есть особенность — если для текущей строки из master список detail пуст, строка master печататься не будет. Если все же необходимо распечатать такие строки, для бэнда "master data" нужно установить флажок "Печатать, если detail пуст" (PrintIfSubsetEmpty).

 Отчет с тремя уровнями

Для построения отчета разместите на листе бэнды "master data", "detail data" и "subdetail data". В остальном принципы построения такие же, как и для отчета с двумя уровнями детализации.

 Cross-tab отчет

Этот вид отчета предназначен для печати таблицы, число столбцов которой на этапе построения отчета неизвестно. При формировании отчета столбцы, не поместившиеся на странице, будут перенесены на следующую. Для построения этого отчета разместите на странице бэнд "master data" и бэнд "cross data". Бэнды crossXXX размещаются на странице вертикально. На пересечении бэндов поместите объект, который будет отображаться в качестве ячейки таблицы. Необходимо поместить объект таким образом, чтобы он полностью помещался в границы области пересечения бэндов (рис. 1.13).

Это все, что нужно для построения базового отчета. Осталось назначить источники данных для "master data" и "cross data". Если бэнд "cross data" пересекает несколько обычных бэндов, то необходимо назначить источники данных для каждого из бэндов. Как видно, для построения cross-tab отчета необходимо как минимум два набора данных, связанных между собой отношением master-detail.

Назначение бэндов "cross header", "cross footer": footer печатается последним столбцом (например, если нужно отпечатать сумму по строке), а header — первым. Кроме того, если в опциях бэнда "cross header" включен флажок "Выводить на всех страницах", то при переносе широкой таблицы на смежный лист header будет продублирован.

Отчет этого типа может иметь переменную высоту строки данных. Для этого надо включить опцию "растягиваемый" у бэнда "master data". При этом формирование кросс-таблицы будет происходить в два прохода: на первом проходе определяется максимальная высота строки, на втором выполняется вывод данных.

 Динамический отчет

В динамических отчетах высота бэндов зависит от высоты находящихся в них объектов. Объектами, которые могут растягиваться в зависимости от количества имеющегося в них текста, являются объекты "Текст", "Текст с тенью" и "RichText".

Чтобы сделать объект растягиваемым, надо включить его флажок "Растягиваемый" (Stretched). Кроме того, этот же флажок надо включить у бэнда, на котором расположен объект. При печати растягиваемого бэнда программа считает максимальную высоту объектов, находящихся на бэнде, и устанавливает высоту бэнда равной максимальной высоте объектов (рис. 1.19) и (рис. 1.20).

Рис. 1.19.

 

Рис. 1.20.

 

Если на бэнде несколько растягиваемых объектов, расположенных рядом, то при растягивании нижние границы всех объектов (независимо от их актуальной высоты) будут совпадать с нижней границей бэнда (рис. 1.21).

Рис. 1.21.

 

А как быть, если растягиваемые объекты нужно поместить друг под другом, либо под растягиваемым объектом поместить нерастягиваемый? Для этого применяется бэнд Child. Объекты, находящиеся друг под другом, один или несколько из которых растягиваемые, нужно “разнести” по разным бэндам .

Рис. 1.22.

 

При этом всем Child — бэндам надо также установить флажок "Растягиваемый". Для связывания бэндов служит свойство "ChildBand" в инспекторе объектов. В вышеприведенном примере нужно связать Master data с Child 1 и Child 1 с Child 2.

Следует отметить, что все объекты имеют рамку. С помощью рамок отчету можно легко придать табличный вид. При растягивании объекта рамка растягивается вместе с ним.

 Разрываемые бэнды

Рис. 1.23.

[spacer] При печати бэнда программа проверяет наличие свободного места на странице, и, если оно меньше необходимого, формирует новую страницу и печатает бэнд на ней. При этом место на странице расходуется неэкономно, особенно в случаях, когда высота бэнда достаточно большая (рис. 1.23).

Рис. 1.24.

[spacer] Для того, чтобы вывести на листе столько строк текста, сколько помещается, бэнд должен иметь помимо включенной опции "Растягиваемый" опцию "Разрываемый" (Breaked). При этом отчет будет выглядеть примерно так (рис. 1.24).

Рис. 1.25.

[spacer] Если отчет многоколоночный (см.  Многоколоночный отчет на стр. 37), то содержимое объектов будет переноситься на следующую колонку (рис. 1.25).

Разрывать содержимое могут объекты "Текст", "Текст с тенью" и "RichText". Все остальные объекты будут выведены на той странице, где для этого достаточно свободного места.

 Многоколоночный отчет

Если в обычном отчете при достижении конца страницы формирование продолжается с нового листа, то в многоколоночном — на том же листе, но рядом, т.е. в несколько смежнорасположенных колонок. Количество колонок задается в опциях страницы. Обычный отчет можно превратить в многоколоночный, всего лишь задав количество колонок в опциях страницы. Бэнды "column header" и "column footer" позволяют снабдить каждую колонку заголовком и нижней частью.

Кроме того, количество колонок можно задавать отдельно для каждого дата-бэнда. Если установить свойство Columns > 1 у бэнда, то вывод строк данных будет происходить слева направо и сверху вниз. Можно также указать ширину колонки и промежуток между колонками. Бэнд отображает текущие установки в дизайнере штриховыми линиями.

 Отчет с титульным листом

Можно легко делать многостраничные отчеты (например, первая страница — титульный лист, все остальное - прочая информация). Для того, чтобы создать/удалить лист, используйте кнопки на панели инструментов либо контекстное меню, появляющееся при нажатии правой кнопки мыши на закладке страницы.

По сути, многостраничный отчет представляет собой несколько отчетов в одном. На каждой странице может содержаться собственный отчет, со своим набором бэндов и настройками страницы.

Содержимое страницы может быть выведено на свободном месте предыдущего листа, если в настройках страницы включена опция "Печать на предыдущем листе" (свойство PrintToPrevPage в инспекторе).

 Вложенный отчет

Вложенный отчет - это отчет с размещенным на нем объектом SubReport , который представляет собой ссылку на другой отчет, расположенный на отдельной странице. При формировании такого отчета вместо объекта SubReport будет выведен соответствующий отчет. При вставке объекта в отчет автоматически добавляется новая страница с названием "SubReport xx".

Объекты SubReport можно располагать на листе друг под другом или рядом. В случае, если объекты надо расположить друг под другом, их необходимо “разнести” по разным бэндам (например, первый отчет - в бэнде "master data", второй - в бэнде "child").

На использование SubReports накладываются следующие ограничения:

нельзя использовать колонки;

во вложенных отчетах (не в основном!) игнорируются бэнды ReportTitle, ReportSummary, PageHeader, PageFooter, ColumnXXX;

нельзя использовать разрываемые бэнды;

нельзя использовать группы.

 Master-Detail-Detail отчет

Для построения этого отчета разместите на листе бэнд "master data" и два бэнда "detail data" (рис. 1.26). Для бэндов "detail data" назначьте соответствующие источники данных.

Рис. 1.26.

[spacer] Разумеется, таким образом можно строить и отчеты типа Master-Master, Master-Detail-SubDetail-SubDetail. Отчеты типа Master-Detail-Master-Detail строить таким способом нельзя - нужно разнести разные master-detail по отдельным страницам (см.  Отчет с титульным листом на стр. 37). Количество одинаковых дата-бэндов на листе может быть до 32.

 Отчет без бэндов

Отчет может вообще не содержать бэндов. Объекты, расположенные непосредственно на листе, при печати выведутся на своих местах.

 Отчет с группами

Группы применяются для группировки строк данных с использованием некоторого критерия. В качестве критерия обычно выступает выражение, основанное на полях из набора данных. При формировании отчета программа следит за значением критерия, и, как только оно изменится, формирует новую группу.

Для построения отчета разместите на листе бэнды "group header" и "master data". Назначьте источник данных для "master data", затем в редакторе бэнда "group header" укажите условие группировки. Например, чтобы распечатать список сотрудников в группированном виде (группировка по первой букве фамилии), надо указать примерно такое условие группировки: Copy([Фамилия], 1, 1). При изменении этого условия будет сформирована новая группа.

На использование групп накладываются следующие ограничения:

нельзя применять группы во вложенных отчетах;

группа может выступать только в роли списка 1-го уровня, т.е. сначала идет группа, затем - master, detail и т.п.

Рис. 1.27.

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

 Отчет с диаграммами

Предположим, имеется отчет вида "Клиент - сумма заказа":

Для построения диаграммы по этим данным необходимо разместить объект "Диаграмма" в бэнде "report summary" (или любом другом, который печатается после вывода всех необходимых данных). В редакторе объекта нужно выбрать тип диаграммы (один из шести возможных - линии, точки, столбцы горизонтальные и вертикальные, области и круговые диаграммы). Для связывания диаграммы с данными необходимо указать имена объектов, которые содержат эти данные (в нашем случае это объект, содержащий строку наименования клиента и объект с суммой). Имя объекта можно увидеть в инспекторе объектов.



<< 1.4 Просмотр и печать отчета. Оглавление 1.6 Параметры отчета >>
© ООО "Кигли", 2002-2004