Как подключиться к базе данных JSON из кода приложения

15.12.2019

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

Первый способ хорошо вам известен. Нужно создать подключение в приложении, а затем зарегистрировать его в отчете. Тогда, при конструировании отчета вы можете выбрать этот источник по алиасу. С одной стороны, это удобно – изменение подключения в программе не отразится на отчете. Отчету все равно откуда берутся данные, лишь бы имена таблиц и полей, типы данных соответствовали заданным в шаблоне. Минус этого подхода – невозможно конструировать отчет без пользовательского приложения. Ведь подключение только в нем. Разработчик отчетов может и не иметь никакого пользовательского приложения с подключением. В этом случае ему подойдет именно внутреннее подключение к данным в отчете.

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

Для этого, приложении вам потребуется добавить ссылки на библиотеки: FastReport.dll и FastReport.JsonDataConnection.dll. В каталоге установки FastReport.net есть папка Extras\Connections\FastReport.Json. нужно собрать этот проект. В итоге вы и получите нужные библиотеки. Добавляем их в ссылки проекта. А далее код подмены коннекшена:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
using FastReport;
using FastReport.Utils;
using FastReport.Data;
 private void Button1_Click(object sender, EventArgs e)
 {
 RegisteredObjects.AddConnection(typeof(JsonDataConnection));
 Report report = new Report(); 
 
 JsonDataConnection connection = new JsonDataConnection();
 connection.ConnectionString = "Json=../../App_Data/nwind.json";
 connection.CreateAllTables();
 report.Dictionary.Connections.Add(connection);
 report.RegisterData(connection.DataSet);
 report.Load("../../App_Data/json.frx");
 report.Prepare();
 report.Show();
 }

 В начале мы регистрируем объект подключения к базе данных Json. Затем создаем экземпляр объекта отчета. Создаем экземпляр объекта json коннекшена. Задаем его свойство ConnectionString – по сути просто ссылка на файл. В нашем случаем файл расположен в папке App_Data в проекте. Функция CreateAllTables подгружает все таблицы из источника.

Далее нам нужно добавить созданное подключение в коллекцию подключений отчета и зарегистрировать источник данных в отчете.

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

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

.NET .NET FastReport FastReport Connection Connection JSON JSON
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»