我有一个角度应用程序,它连接到报表服务器来查看SSRS报表。应用程序使用存储在数据库中的文件路径来标识报表。这是文件路径的一个示例:
http://<serverName>/Reports/Pages/Report.aspx?ItemPath=%2fReportFolder%2fPatientReport
我需要添加第二个数据源,以便该报告可以连接到不同的数据库。目前,该报告被硬编码为1个数据库.但是我读到我可以创建第二个数据源并动态链接到另一个数据库。
是否可以在此文件路径中传递数据库的名称,然后使用此数据库名称来选择正确的数据源?
UPDATE我找到了参数化数据库名称的说明。我在服务器上创建了一个所有数据库都存储的数据库,它有一个包含数据库名称的表。我创建了一个数据源来检索这些名称,并创建了一个参数“DatabaseName”,它将是来自用户的输入(希望我能够将这个名称作为参数添加到文件路径字符串中,这样用户就不必选择它)。因此,在报告中,我有一个数据源,它返回一个数据库列表和一个动态数据源,该数据源在连接字符串中使用这个表达式添加数据库名称:
但是,我必须将这个数据源连接到数据集。当我运行它时,="Data Source=<server Name>;Initial Catalog=" & Parameters!DatabaseName.Value
我尝试在数据集中使用这个动态数据源,但由于错误,无法保存数据集:
这是因为我需要将Database参数添加到查询中吗?如果是的话,有什么办法可以绕过这个问题吗?比如能够添加:将@DatabaseName添加到查询的顶部?
UPDATE I有一个可选数据库显示的基本报告。现在,我只需将数据库名作为参数发送到报表字符串中。
发布于 2016-12-01 22:02:05
我想这个out...in的案子可以帮到别人。在报告中,我创建了一个参数DatabaseName。我还添加了一个嵌入式数据源。一开始不是动态的而是硬编码的。数据集还必须嵌入到报表中,并链接到新创建的数据源。运行查询并在成功时运行。保存报告!(我发现,为了保存报表,查询必须成功运行。您无法使用动态数据源成功地运行查询。)
一旦保存了报表,现在将数据源更改为dynamic。打开它并创建如下表达式:
="Data Source=<server Name>;Initial Catalog=" & Parameters!DatabaseName.Value现在,保存并关闭报告。您不能再从服务器上运行它了,因为它没有数据源。
我使用一个以DatabaseName为参数的URL从我的应用程序中运行它:
http://serverName/ReportServer?%2fInitialFolderName%2fReportFolderName%2fReportName&rs:Command=Render&DatabaseName=Wrh1
在上面的示例中,参数DatabaseName设置为Wrh1文件夹路径为InitialFolderName/ReportFolderName/ReportName
https://stackoverflow.com/questions/40870150
复制相似问题