Как использовать несколько баз данных в отчете

28.04.2019

Иногда, нам приходится иметь дело с данными из разных источников, в разных форматах. Это может стать настоящей головной болью для аналитиков, разработчиков отчетов. Ведь придется как-то объединить данные. К счастью, в отчетах FastReport .NET можно создавать множество подключений к данным. Причем, источники данных могут быть совершенно разными – текстовые файлы, базы данных. Благодаря этому, мы сможем консолидировать данные в одном отчете.

В этой статье мы рассмотрим, как создать в отчете два источника данных и связать таблицы из них, для создания отчета с главной и подчиненной таблицей. Всего две таблицы и два файла. Один – в формате csv, второй – в json.

Плагины

Для дизайнера отчетов FastReport .NET предусмотрены плагины – расширения для добавления нового функционала. Это могут быть дополнительные коннекторы к источникам данных или дополнительные элементы управления для отчета. В нашем примере понадобиться подключение к JSON. Поэтому, мы добавим плагин с коннектором к источнику данных файлу JSON.

Чтобы получить плагин коннектора в формате JSON, нам потребуется собрать соответствующий проект. Находится он здесь:

C:\Program Files (x86)\FastReports\FastReport.Net\Extras\Connections\FastReport.Json

Все, что вам нужно – восстановить один пакет NuGet Newtonsoft.Json, и собрать проект. В папке Debug или Release вы найдете две библиотеки: FastReport.Json.dll и Newtonsoft.Json.dll. Первый – и есть плагин для дизайнера отчетов.

Как добавить плагин

Запускаем дизайнер отчетов. В меню File находим Options. В опциях дизайнера отчетов переходим ко вкладке Plugins:

 

 И добавляем созданный нами плагин. Чтобы воспользоваться им, необходимо перезапустить дизайнер отчетов.

Приступим к созданию демонстрационного отчета. Создадим новый источник данных, с помощью кнопки:

 

В появившемся окне мистера создания источника данных, нажимаем кнопку New connection…

В окне настройки соединения выбираем тип соединения. Именно в этом списке добавляются новые коннекшены, которые мы добавляем с помощью плагинов. Сейчас нас интересует стандартный коннектор – CSV database. Выбираем его задаем путь к файлу с данными:

 

Как видите, в этом окне есть еще несколько важных настроек подключения. В окошке внизу вы можете увидеть, как будет выглядеть таблица. Нажимаем Ок и переходим к следующему шагу мастера создания источника данных. Тут нужно просто отметить таблицу флажком и завершить создание источника.

Давайте создадим второй источник данных. В этот раз мы выбираем тип подключения – JSON database.

 

Из настроек здесь только выбор файла. Также, как и в первом случае выбираем таблицу и завершаем создание источника данных.

Итак, мы имеем две таблицы – Orders и Customers. В таблице Orders есть внешняя ссылка на Customers.

Наша задача вывести наименования клиентов и список заказов для каждого из них. Таким образом получится нечто вроде группировки заказов по клиенту. Такой тип отчетов называется Master-Detail. Чтобы осуществить задуманное, нужно создать связь между таблицами. В окне Данные (Data) нажимаем кнопку Actions. В выпадающем списке выбираем New Relation…:

В окне редактирования связи задаем родительскую таблицу, которая имеет связь один-ко-многим. Также задаем дочернюю таблицу. Следующий шаг – настроить колонки для связи. По сути мы выбираем внешний ключ в родительской таблице и первичный ключ в дочерней:

Вы можете увидеть, что таблицы связаны по такому характерному элементу в дереве данных:

В таблице Orders добавился элемент Customers, который можно раскрыть нажатием на крестик. Это означает, что таблица Orders имеет детализирующую таблицу Customers. Таких детализирующих таблиц может быть много, ограничения нет.

Данные подготовлены, можно создавать шаблон отчета. На бэнд «Данные» перетаскиваем нужные поля из таблицы Customers. Для нашего примера достаточно поля CompanyName. Затем делаем правый клик по бэнду «Данные», и из контекстного меню выбираем Add Detail Data Band.

Таким образом мы добавляем подчиненный бэнд «Данные». Перетягиваем в добавленный бэнд нужные поля из таблицы Orders.

Добавляем детальный бэнд данные.

 

Оформляем шаблон отчета и запускаем отчет в режиме предварительного просмотра:

В результате мы получили логически связанные таблицы, полученные из совершенно разных источников данных. Таким образом вы не обязаны приводить данные к единому формату, что сильно облегчит разработку отчетов тем, кто часто работает с разнообразными данными.

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.