Забыли пароль?
  • Главная
  • /
  • Статьи
  • /
  • Как cформировать график по группам данных в FastReport VCL 6

Как cформировать график по группам данных в FastReport VCL 6

Dmitriy Fedyashov

В статье «Как выводить итоги группировки в заголовке в FastReport VCL 6» мы рассмотрели, как использовать свойство Processing для объекта «Текст». Однако это свойство характерно и для других объектов: Chart, Gauge и Barcode. Сегодня мы рассмотрим применение свойства Processing в контексте объекта Chart. Используя свойство Processing мы можем использовать данные, которые будут получены позже. Этот механизм называется «отложенная обработка». Смысл в том, что объект, с включённым свойством Processing не обрабатывается в порядке очередности, как обычно. Он будет обработан, когда сработает событие, выбранное в свойстве ProcessAt для этого объекта. Таким образом мы можем, например, сформировать график в начале отчета, по данным, полученным в конце отчета.

Но в рамках этой статьи мы рассмотрим демонстрационный пример “Expressions processing” из поставки FastReport VCL 6. Наша задача выводить график населения для стран, сгруппированных по континентам.

Давайте создадим новый отчет. Добавим источник данных на вкладке Data. Создаем подключение к базе данных. Для этого перетаскиваем компонент ADO Database с панели инструментов и создаем подключение:

 

В поставке FR VCL 6 есть демонстрационная база demo.mdb. Используем ее. Теперь необходимо получить данные из базы. У нас есть на выбор два компонента ADO Table и ADO Query. Первый позволяет выбрать таблицу для отображения, второй – написать sql запрос. Так как данные хранятся не сортированными, нам придется написать свой запрос с сортировкой. Перетаскиваем компонента ADO Query в рабочую область. В инспекторе свойств, добавленного объекта находим SQL. Двойным кликом по полю рядом открываем редактор SQL запроса:

1
2
3
SELECT *
FROM Country
ORDER BY Continent, Name

Переходим к странице отчета. На бэнде «Данные» размещаем поля:

Name, Area, Population.

Добавляем бэнд «Заголовок группы». Условия группировки – поле Continent. Также, добавим подвал группы. Получился такой шаблон:

В подвале группы сформируем итог:

1
[SUM(<ADOQuery1."Population">,MasterData1)]

Теперь добавим объект Chart в бэнд «Заголовок группы». Вызываем редактор графика с помощью двойного клика по нему. Добавим новую серию – Bar - Normal. В настройках серии выбираем источник данных – Band source – MasterData1. Для Label – значение Name, а для оси Y – Population.

Так как стран на континенте может быть очень много, у нас нет возможности выводить все. Поэтому ограничимся 10-ю. Для этого задаем параметр TopN values – 10. Последний штрих – окрасить каждый столбец в свой цвет. Слева вы видите инспектор свойств для серии. Включите свойство ColorEachPoint. 

 

Закрываем редактор графиков.

Теперь просто выделим объект Chart, кликнув по нему мышью. В инспекторе свойств слева вы найдете Processing. Раскрываем это свойство и видим еще два: GroupLevel и ProcessAt. Первое нас не интересует, оно предназначено для группировок с несколькими уровнями вложенности. Второе задает событие, по которому будет обработан данный объект. Выбираем для него paGroupFinished. Это означает, что наш график получит данные только после отображения группы. И так для каждой группы. Давайте взглянем на финальный шаблон отчета:

 

Как вы заметили, я добавил в бэнд «Заголовок группы» поле Continent и заголовки колонок внизу. Ну что ж. Запустим отчет:

 

Первая группа по алфавиту – Африка. В графике показано 9 столбцов для стран, отсортированных по убыванию количества населения. Крайний справа столбец показывает общее количество населения в остальных странах, которые не попали в график. Если вы хотите отображать только графики, выставьте свойство Visible в false у бэндов MasterData и «Подвал группы»:

 

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

Похожие статьи:

назад