我的程序允许用户创建本地SQL Server数据库文件(.mdf
),以存储大量生成的数据。现在,我想创建报告,使用户可以选择程序为其生成的数据库。这意味着我无法将数据源附加到应用程序以创建RDLC。但是,所有数据库都具有相同的架构,该架构来自我为程序创建的某些“主”数据库。
如何使用带有动态生成的数据库文件的ReportViewer创建报表?
我正在考虑仅使用查询将数据从生成的数据库复制到我的“主”数据库,然后生成报告,然后将主数据库截断,以便可以使用主数据库创建RDLC。但是,这似乎效率低下且混乱。有更好的方法吗?
谢谢。
答案 0 :(得分:1)
创建数据源以直接指向您的主数据库,然后在报告中创建一个参数,并在运行“实际”报告之前要求它。此参数可以是组合或复选框,其值将是从获取数据库名称的查询中生成的数据。
最后,在报表上使用参数作为变量,然后从您真正需要的数据库中进行选择,例如:
Select table from mydatabase.schema.table
答案 1 :(得分:0)
这对我有用:
首先,更新“ 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)
因此,应用程序中使用连接字符串的所有数据集都将更新为指向新的数据集。希望这会有所帮助。