Вам часто приходится исследовать Данные, сгруппированные на основе одного или нескольких критериев. Эти критерии - обычные выражения, построенные на основе одного или нескольких Полях Таблицы, однако Критерии могут быть и более сложными. Вы определяете Группу Данных в вашем Отчете с помощью специального Инструмента Group On, в котором формируется описываемое Выражение Критерия, на основе которого Группируются Записи формируемого Отчета.

Для каждого набора Записей Отчета (Группы), в которых выражение Критерия оценивает к одному значению, вы можете выполнить необходимые действия, или Операции, допустимые для внутреннего Механизма Отчетов (Report Engine). Эти действия могут содержать вычисление итоговых Значений, дополнительные вычисления, или отдельные фрагменты Программного Кода.

Использование Нескольких Групп Записей Данных

Вложенные Группы данных (одна-в-другую ) могут быть полезны в тех случаях, когда требуется вычисление итоговых Значений для групп записей на разных уровнях группировки. Например, сначала вы можете сгруппировать Записи Отчета по названию Страны, для этого используется соответствующее Поле Таблицы Данных (Country). Вместе с тем, вы можете также сгруппировать Записи отдельной Группы-Страны по соответствующим Регионам (областям, краям, штатам...), которые будут составлять вложенные Группы, для этого уровня группировки используется соответствующее Поле Region.

Для определения того, какая из описываемых Групп является Внешней, а какая - Внутренней (вложенной), вам требуется оценить, как часто изменяется значение Поля Country и как часто изменяется значение Поля Region. Так как Region изменяется чаще - то это будет Внутренняя Группа, а поле Country - внешняя Группа.

Размещение Записей Данных для целей Группировки

Для эффективного выполнения Группировки Данных, вам нужно выполнить соответствующую предварительную Сортировку Записей Отчета. Если требуемые Записи Отчета будут не отсортированны согласно Полей Группировки (или выражений Критерия Сортировки), то внутренний Механизм Отчета (Report Engine) не сможет правильно выполнить поставленные Задачи по обработке Групп Записей, подсчитать Итоги, или другие необходимые Операции, требуемые для Группы.

Инструментарий Отчета не выполняет фактическую сортировку Записей исходных Таблиц. Записи обрабатываются в том же порядке, который задан для указанной Таблицы. Требуемая последовательность Записей, сортировка, или порядок размещения Записей должны быть предварительно обеспечены: либо с помощью включения Индексов (Set Order to Tag), либо созданием Представления (Create View...), или другими доступными методами, обеспечивающими требуемую Сортировку Данных для правильной Группировки. Например, если рассматриваемая выше Таблица не отсортирована согласно Полям Country-Region (то есть, группировка - невозможна). Вам требуется обеспечить порядок размещения Записей: или включить имеющийся Индекс по указанным Полям, или построить отсортированное Представление (SQL: Select...Group By), или создать некоторый Запрос (SQL), обеспечивающий требуемую сортировку.

В рассматриваемом выше Примере (Country-Region), Отчет содержит два уровня Группировки, соответствующие Записи Отчета должны быть отсортированны сначала по Названию Страны (Country), а в нутри этой группы - отсортированы по названию Региона (Области, Края, Штата). Если Исходные Данные Отчета находятся в обычной Таблице (.dbf), то вам достаточно создать Индексный Тэг по следующему выражению: Country + Region.

NoteОбратите Внимание

Существующий Индексный Тэг может содержать дополнительные поля или выражения, которые не используются для процессов Группировки Данных в Отчете. Допустим, что в рассматриваемом Примере, существует индексный Тэг: Country + Region +City (Страна-Регион-Город). Представленный порядок размещения Записей в Отчете предоставляет дополнительную характеристику Отчета, размещение Городов в Регионе: по-алфавиту.

Специфические для Группировки Данных Характеристики Отображения Отчетов

Когда вы группируете Данные в Отчете, вы можете использовать "Предисловие" и "Послесловие" для каждой группы Данных, для этого существуют механизмы Верхнего и Нижнего Колонтитулов Группы, для которых определены соотвествующие Полосы Отчета: Group Header band / Group Footer band. Обычно, полоса Заголовка Группы содержит Поле, которое используется в выражении Критерия группировки (для обозначения текущей группы Данных). Вы можете также добавить в описываемую Полосу и другие необходимые вам описательные текстовые элементы, которые будут выводиться в Отчете перед первой Записью в Группе. Полоса нижнего колонтитула Группы может содержать дополнительную информацию об Итоговых данных Группы, промежуточные Суммы, и так далее.

Вы можете определить следующие дополнительные характеристики Данных в Группе:

  • Печать соответствующих Заголовков конкретной Группы; специальные, итоговые данные в нижних колонтитулах Группы.

  • Начало печати каждой Группы Данных с нового Листа (с начала Страницы).

  • Обнуление сквозной нумерации Листов Отчета при выводе Группы с новой Страницы.

Выполнение Фрагментов Программного Кода для Групп Данных

Вы можете выполнить требуемые вам Операции (или обработку Данных) с помощью фрагментов программного Кода для каждой (или конкретной) группы Данных. Например, каждый раз, когда начинается новый Регион для данной Страны, вы можете вставить в Отчет название рассматриваемого Региона (вместе со Страной), добавить описательную Информацию в дополнительный Курсор, и еще текущее значение системной переменной _PAGENO. После получения текущего Отчета, вы можете использовать указанный дополнительный Курсор в качестве построения второго Отчета: Специального Глосария или Таблицы Содержания к первому Отчету. В результате получаем сложный, интегрированный Отчет (состоящий из двух Отчетов: основного и дополнительного).

Для осуществления описанного выше Сценария получения сложного Отчета, создайте одну или две пользовательских функций, выполняющих требуемые Операции; поместите вызов этих функций соответственно в события: On entry или On exit для полосы Заголовка Группы Данных. Обычно данные события называются: "При Входе в Группу" и "При Выходе из Группы". 

Дополнительную информацию смотрите в разделе: Как: Определить Выражение, вычисляемое в процессе Полосы Отчета.

См. также