我在ReportServer上部署了一个报告。此报告使用的是共享的dataSource,它也部署在ReportServer上。 我在使用WindowsFormsHost控件的WPF应用程序中使用ReportViewer。通过配置ReportViewer的ServerReport属性,我可以正确地在我的应用程序中显示ReportServer报告。
我的问题是,无论如何都要更改我的报告正在使用的ReportServer上部署的共享DataSource的连接字符串。
实际上,我想对同一个数据库的多个副本使用相同的报告进行测试和迁移。
有谁能告诉我一个用c#代码更新共享数据源的解决方案?
答案 0 :(得分:3)
无法通过ReportViewer更改报告的数据源。您可以使用Web服务更改数据源,但这实际上会为所有用户更改服务器上的数据源 - 可能不是您想要做的。
我认为最接近的是使用嵌入式数据源构建报表,该数据源使用参数值来控制其连接字符串。您可以构建一个共享数据集,按名称提供连接字符串(“测试”,“迁移”等),并将该名称作为参数传递给报告。
你需要:
NamedConnections
。这些可以来自共享数据源中的表,也可以在数据集的查询中进行硬编码。@NamedConnection
参数并返回一个完整连接字符串的单个字符串值。同样,这些可能来自数据库或硬编码。我们称之为SelectedConnection
@NamedConnection
参数。这应该是可见的,应该使用NamedConnections
数据集作为其可用值。@ConnectionString
内部参数,该参数使用SelectedConnection
数据集作为其默认值。@ConnectionString
参数的嵌入数据源。这允许您使用数据集设计器来构建数据集。我称之为StaticConnection
。@ConnectionString
参数作为其连接字符串。报告设计完成并准备好部署后,请切换数据集以使用此数据源。我们称之为DynamicConnection
。现在使用ReportViewer,您将值“Test”传递给@NamedConnection
参数。然后,SelectedConnection
数据集可以运行,并为@ConnectionString
参数提供适当的连接字符串,然后由DynamicConnection
数据源使用。
实际数据源引用永远不会更改,但其中的连接字符串会更改。