Сводные отчеты
Этот вид отчета имеет табличную структуру, т.е. состоит из строк и столбцов, причем заранее неизвестно, сколько строк и столбцов будет содержать таблица. Поэтому отчет растет не только вниз, как уже рассмотренные нами типы отчетов, но и вбок. Типичный пример отчета такого типа – бухгалтерская "шахматка".
Рассмотрим элементы таблицы:
На рисунке мы видим таблицу с двумя строками и четырьмя столбцами. Здесь a, b – заголовки строк, 1, 2, 3, 4 – заголовки столбцов, a1..a4, b1..b4 – ячейки. Чтобы построить такой отчет, нам понадобится всего один набор данных (запрос или таблица), который имеет три поля и содержит следующие данные:
a 1 a1
a 2 a2
a 3 a3
a 4 a4
b 1 b1
b 2 b2
b 3 b3
b 4 b4
Как видно, первое поле содержит номер строки, второе – номер столбца, третье – содержимое ячейки на пересечении строки и столбца с указанным номером. При построении отчета FastReport создает в памяти таблицу и заполняет ее данными. При этом таблица динамически расширяется, если строки или столбца с заданным номером еще не существует.
Заголовки могут иметь более одного уровня. Рассмотрим следующий пример:
В этом примере номер, или индекс, столбца – составной, т.е. состоит из двух значений. Этот отчет требует следующих данных:
a 10 1 a10.1
a 10 2 a10.2
a 20 1 a20.1
a 20 2 a20.2
b 10 1 b10.1
b 10 2 b10.2
b 20 1 b20.1
b 20 2 b20.2
Здесь первое поле, как и прежде, содержит индекс строки, второе и третье поля – индекс колонки. Последнее поле содержит значение ячейки. Чтобы вы лучше представляли, как FastReport строит таблицу со сложным заголовком, рассмотрим следующий рисунок:
Примерно так выглядит наша таблица перед обработкой. В процессе обработки FastReport объединяет ячейки заголовка с одинаковыми значениями, находящиеся на одном уровне.
Следующий элемент таблицы – промежуточные итоги и итоги, демонстрирует следующий рисунок:
Этот отчет строится на тех же данных, что и предыдущий. Столбцы, показанные серым на рисунке, вычисляются автоматически.