Visual Studio:将ReportViewer与用户生成的数据库文件(数据源)一起使用



我的程序允许用户创建本地SQL Server数据库文件(.mdf(来存储大量生成的数据。现在,我想创建报告,让用户选择程序为他们生成的数据库。这意味着我不能将数据源附加到我的应用程序来创建RDLC。然而,所有数据库都有相同的模式,这些模式来自我为程序创建的某个"主"数据库。

如何使用ReportViewer和动态生成的数据库文件创建报告?

我正在考虑使用查询将数据从生成的数据库复制到我的"主"数据库,生成报告,然后截断主数据库,这样我就可以使用主数据库创建RDLC。然而,这似乎既低效又混乱。有更好的方法吗?

谢谢。

创建直接指向master数据库的数据源,然后在报表中创建一个参数,并在运行"实际"报表之前请求它。此参数可以是一个组合框或复选框,它将从获取数据库名称的查询中生成的数据作为值。

最后,在您的报告中使用参数作为变量,然后从数据库中选择您真正需要的,例如:

Select table from mydatabase.schema.table

这就是我的工作原理:

首先,按照dbamex的建议,更新"master"数据库的连接字符串,以指向要访问的数据库。例如,如果您的app.config:中有此连接字符串

<add name="MyConnectionString" connectionString="Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=|DataDirectory|ResourcesSSA.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)

因此,应用程序中使用连接字符串的任何数据集都将更新为指向新的数据集。希望这能有所帮助。

最新更新