Visual Studio: использование ReportViewer с созданным пользователем файлом базы данных (источник данных) - PullRequest
0 голосов
/ 14 ноября 2018

Моя программа позволяет пользователям создавать локальные файлы базы данных SQL Server (.mdf) для хранения огромного количества сгенерированных данных.Теперь я хочу создать отчеты, которые позволят пользователю выбрать базу данных, созданную для них программой.Это означает, что я не могу присоединить источник данных к своему приложению для создания RDLC.Однако все базы данных имеют одну и ту же схему из некоторой «основной» базы данных, которую я создал для программы.

Как я могу создавать отчеты, используя ReportViewer с динамически генерируемыми файлами базы данных?

Я думаю просто скопировать данные из сгенерированной базы данных в мою «основную» базу данных, используя запросы, сгенерировать отчет и затем обрезать основную базу данных, чтобы я мог создавать RDLC с использованием основной базы данных.Однако это кажется неэффективным и грязным.Есть ли лучший способ сделать это?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Вот что у меня сработало:

Во-первых, обновите строку подключения из базы данных "master", чтобы она указала на базу данных, к которой вы хотите получить доступ, например, как предложено dbamex. Например, если у вас есть эта строка подключения из вашего app.config:

<add name="MyConnectionString" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Resources\SSA.mdf;Integrated Security=True;Connect Timeout=30"

Затем вы можете добавить что-то вроде этого в ваш код, который вы можете вызывать, когда хотите получить доступ к пользовательской базе данных:

Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
config.ConnectionStrings.ConnectionStrings("MyConnectionString").ConnectionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" & new_db_path & ";Integrated Security=True;Connect Timeout=30"
config.Save(ConfigurationSaveMode.Modified)

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

0 голосов
/ 15 ноября 2018

Создайте источник данных, чтобы он указывал непосредственно на вашу основную базу данных, затем создайте параметр в отчете и запросите его перед запуском «фактического» отчета. Этот параметр может быть комбинированным или флажком, который будет иметь в качестве значений данные, сгенерированные из запроса, в котором вы получите имена баз данных.

Наконец, в своем отчете используйте параметр в качестве переменной, а затем выберите из БД, которая вам действительно нужна, например:

Select table from mydatabase.schema.table
...