group - PO-21/QtReports GitHub Wiki
<group>
- Группы - это гибкий способ организации данных в отчете. Они представляют собой последовательность
записей, которые имеют что-то общее, например значение некоторого поля.
В отчете может быть сколь угодно групп. Порядок групп, заявленных в шаблоне отчета важен, потому что группы содержат друг друга. Одна группа содержит следующую группу, и так далее.
Значение связанного с группой выражений обьединяет соответствующие записи в группу. Это значение общее для
всех записей группы. Когда в процессе итерации записей из источника данных, значение выражения изменяется, происходит
вставка соответствующего <groupFooter>
и <groupHeader>
секций в результирующий документ.
Механизмы группировки довольно прост - для каждой записи из источника данных вычисляется groupExpression
и сравнивается с groupExpression
предыдущей записи. Если они не равны - значит нужно закрывать прошлую группу и
открывать следующую.
Группа в отчете имеет три компонента:
-
<groupExpression>
- выражение, по которому будет производиться группировка -
<groupHeader>
- заголовок группы - что будет напечатано перед первым элементом
Этот раздел отмечает начало новой группы в итоговом документе. Он вставляется в документ каждый раз, когда значение
<groupExpression>
изменяется во время итерации записей из источника данных. Раздел заголовка группы является
много полосной (bands
) секцией.
-
<groupFooter>
- что будет напечатано после последнего элемента группы.
Каждый раз, когда группа изменяется, engine
добавляет соответствующую колонтитул группы, перед началом новой группы
или в конце отчета. Раздел сноска группы также является многополосным.
- name - обязательный. Название однозначно определяет группу и может быть использовано для других атрибутов, когда необходимо сослаться на конкретную группу в отчете. Название группы является обязательным и подчиняется той же схеме именования, что и для параметров и переменных отчета.
- IsStartNewColumn - разрыв страницы (true| false) default: "false".
- IsStartNewPage - разрыв колонки (столбца) (true| false) default: "false"
Иногда полезно вставлять разрыв страницы или колонки, когда начинается новая группа. Для того, чтобы engine
вставлял разрыв страницы или колонки каждый раз, когда начинается новая группа, необходимо задать атрибуты
IsStartNewPage
или IsStartNewColumn
соответственно.
- IsReprintHeaderOnEachPage (true| false) default: "false".
Группировка данных работает, как задумано только тогда, когда записи в источнике данных уже упорядоченны в соответствии с групповым выражением, используемым в отчете.
Например, если вы хотите сгруппировать некоторые
продукты по стране или городу производителя, engine
рассчитывает найти записи в источнике данных уже
упорядоченными по стране и городу.
Если это не так, может получиться, что записи, относящихся к конкретной стране или городу окажутся в разных
частях полученного документа, потому что engine
не сортирует данные.