Отчет FastReport с группировками и переменным количеством строк и столбцов

Добрый день.
Стоит задача разработать отчет-ведомость, в которой строки это ученики, а столбцы предметы. На пересечении соответственно оценки. Перечни учеников и предметов переменные, т.е. для одной ведомости могут быть одни предметы, для другой совсем другие и их может быть больше или меньше.
Имеем таблицу с полями:
AccountID, SchoolYearID,ClassID, ContactID, CourseID, Mark (оценка).
С Cross-Tab такой отчет сформировать достаточно легко, но он формируется для всех данных одной таблицей. Но данные необходимо группировать по контрагентам, годам обучения и прочим параметрам. С Cross-Tab такой номер не проходит.
Видел информацию, что такой отчет можно сделать с использованием вертикальных бэндов, но к сожалению примеров реализации не нашел.
Прошу подсказать как правильно решить такую задачу.

Нравится

7 комментариев

Виктор Викторович, поставленную задачу можно реализовать с использованием вертикальных бэндов. Ознакомиться с принципом и примерами построения отчета с вертикальными бэндами можно по ссылке http://www.delphiplus.org/articles/components/fastreport_vertical_band/index.html

Спасибо, Наталия. Я видел эту ссылку. К сожалению в Terrasoft мне пока не удалось повторить даже эти примеры. Описание для Delphi, а у нас похоже своя специфика FastReport. Поэтому и спрашивал о примере именно применительно к Terrasoft.

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

Огромное спасибо. Вчера кое что уже получилось, но пока не то. Особенно непонятна тема правильной организации данных. Если можно сделать с одним датасетом, то замечательно.
Если же делать два связанных датасета, то здесь была бы полезной информация об их правильной структуре и связях.
Я видел тему о связи датасетов: http://www.community.terrasoft.ru/forum/topic/5579 и у меня все получилось, но только с горизонтальными бэндами. В этом случае используются MasterData и DatailData, но мне надо связать получается горизонтальный и вертикальный MasterData, как в примере с delphiplus.org.
Как это правильно сделать?

Здравствуйте Виктор,
В качестве примера рассмотрим такой отчет:
1
Выведем в название продажуи, доход продажи и задачи связанные с ней.
Переменными колонками у нас будут задачи, так как с одной продажей могут быть связаны несколько задач.
Пусть у нас есть 2 датасета:
ds_Opport
2
и ds_TaskMain
3
Для того, что бы FastReport смог построить связь по вертикальному MasterData, необходима колонка подчененной записи (в данном случае в sq_MainTask колонка [tbl_Task].[OpportunityID], а в sq_Opport колонка [tbl_Opportunity].[ID] с алиасом (AS) [OpportunityID]) и соответствующий включенный compare фильтр OpportunityID в sq_MainTask с параметром OpportunityID
5
6
В самом дизайнере отчета для построения переменных колонок, следует добавить
вертикальный Header
7
и вертикальный MasterData
8
В дизайнере FastReport, также важно добавить DetailData,
4
который будет прикреплен к ds_TaskMain, в противном случае, мы будем получать постоянно одно значение задачи, с первой продажи

Все сервисы отчета в прикрепленных файлах

Добрый день Алексей.
Спасибо. Сейчас буду пробовать.

Спасибо огромное. Все получилось. :)

Показать все комментарии