Отчет с группированием данных

Простой отчет

Компоненты, размещаемые в полосе отчета

Полоса отчета

Является основным элементом отчета, где размещаются другие его компоненты.

Тип полосы определяется свойством BandType, принимающим значения вида:

· rbTitle – заголовок отчета, выводится один раз на первой странице под верхним колонтитулом, если он есть;

· rbPageHeader – верхний колонтитул, печатается в начале каждой страницы, содержит дату и/или номер страницы;

· rbDetail – данные записей набора данных;

· rbPageFooter – нижний колонтитул, печатается в начале каждой страницы, содержит дату и/или номер страницы;

· rbSummary – итог отчета, выводится в конце отчета, но выше нижнего колонтитула;

· rbGroupHeader – заголовок группы, выводится для каждой группы;

· rbColumnHeader – заголовки столбцов, печатаемые один раз на каждой странице над данными;

· и др.

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

Обычно используются следующие компоненты отчета:

· QRLabel – надпись с текстом, для полос данных обычно не используется;

· QRDBText – значение поля записи БД, обычно размещается в полосе данных;

· QRExpr – выражение, возможное с применением значений полей, обычно размещается в полосах данных и нижних колонтитулах;

· QRSysData – системная информация для итоговых полос и колонтитулов;

· QRImage – графическое изображение, используется в любой полосе;

· QRShape – геометрическая фигура, используется в любой полосе.

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

Простой отчет может содержать следующие полосы:

· верхний колонтитул (rbPageHeader);

· заголовок отчета (rbTitle);

· заголовки столбцов (rbColumnHeader);

· данные (rbDetail);

· итог отчета (rbSummary);

· нижний колонтитул (rbPageFooter).

Выводимые в отчете данные можно группировать по определенному признаку. Для группирования записей отчета по определенному полю в наборе данных должен быть установлен текущий индекс, построенный по этому полю. Если индекс не установлен, то ошибки не возникает, но группирование выполняется неправильно.

Можно группировать данные, находящиеся в одном или в связанных наборах данных.

Для оформления группы используется компонент QRGroup, который автоматически размещается после заголовков столбцов, а в его свойстве "мастер" указывается компонент отчета.

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

· QRGroup – полоса группы;

· QRBand – полоса данных;

· QRBand – полоса нижнего колонтитула.

Условие группировки определяется свойством Expression компонента QGroup. В полосе нижнего колонтитула обычно размещаются сводные данные о группе, например, суммарное значение.

Отчет для таблиц, связанных отношением "главный-подчиненный"

Выполняется для связанных наборов данных. Компоненты наборов данных можно разместить на форме отчета или на другой форме, с помощью которой пользователь управляет этими наборами данных. Основной частью отчета является комбинация:

· полосы данных QRBand (название Detail);

· полосы детализации QRSubDetail (название SubDetail).

Компонент QRSubDetail при помещении в отчет автоматически располагается после полосы данных. Полосы данных и детализации образуют центральную часть группы.

Для полосы данных в качестве набора данных устанавливается главный набор. В полосе данных обычно размещаются компоненты QRDBText, связанные с полями этого же набора, и компоненты QRLabel, текст которых является заголовками столбцов данных.

Для полосы детализации устанавливается подчиненный набор данных. В ней обычно располагаются компоненты QRDBText и QRExpr, с помощью которых выводятся значения полей записей подчиненного набора данных.

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