Как подключиться к базе данных 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
16 октября 2026

Новые возможности .NET 11: обзор C# 15, EF Core 11, ASP.NET Core и производительности

Обзор .NET 11: C# 15, union-типы, новая модель безопасности памяти, Windows Forms, EF Core 11, ASP.NET Core и Blazor, ускорение Runtime и NativeAOT.
12 октября 2026

Как закрепить строки и столбцы при экспорте в FastReport .NET

Узнайте, как закрепить строки и столбцы при экспорте отчетов из FastReport .NET в OpenOffice Calc и Excel для удобного просмотра больших таблиц.
12 октября 2026

Экспорт отчёта в XML из Preview в FastReport .NET

Узнайте, как сохранить отчёт в формате XML в FastReport .NET: экспорт из Preview без кода и программный экспорт через XMLExport с настройкой параметров.

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