SSRS 预定订阅超链接不起作用

SSRS Scheduled Subscription hyperlinks not working

我目前正在使用 Reporting Services 2014。我使用以下代码能够在共享点网站本身上使用 javascript 弹出窗口 window。该代码还通过 iif 语句解决了导出到 Excel link 的问题 评估 RenderFormat 是否正在网站上查看,或者它是否是另一种格式(Excel、Word、PDF 等)。 iif 语句使用一个变量将 ReportServerURL 替换为适当的站点。在站点上使用 link 以及从站点导出到 Excel 时一切正常。

当我设置发送报告 Excel 文件的预定订阅时出现问题。 ReportSerURL 与上述情况不同。我们有两个站点在计划订阅 excel 文件中使用 http://gsp1/ReportServer and http://gsp2/ReportServer

这是我目前用于在站点上使用 hyperlinks 并从站点导出到 Excel 的代码。有没有办法让我也可以合并一些逻辑来处理预定的订阅文件?

SSRS URL 操作(使用下面的变量)

=iif(
(Globals!RenderFormat.Name = "RPL"), 
"javascript:void(window.open('"+ Variables!RxDrill.Value + "&rv:ParamMode=Hidden&rv:Toolbar=None&rv:HeaderArea=None&rp:StoreKey=" + Fields!StoreKey.Value.ToString + " &rp:RxNumber=" + Fields!RX.Value.ToString + "&rp:RefillNumber=" + Fields!RefillNumber.Value.ToString + "', 'RXOVERVIEW','width=1335,height=450,location=no'))",
Variables!RxDrill.Value + "&rp%3aStoreKey=" & Fields!StoreKey.Value & "&rp%3aRxNumber=" & Fields!RX.Value & "&rp%3aRefillNumber=" & Fields!RefillNumber.Value & "&rs%3aParameterLanguage=")

变量

=Replace(Globals!ReportServerUrl,"/_vti_bin","/_layouts/15") + "/RSViewerPage.aspx?rv:RelativeReportUrl=/SSRS%20Library/Rx Transaction Detail.rdl"

这是我目前在尝试打开订阅 excel 电子邮件文件中的 link 时遇到的错误。

我删除了一个 [&ReportServerUrl] 文本框,发现预定订阅中的路径与浏览器中或导出到 excel 期间的路径不同。我发现订阅使用了 2 个可能的 ReportServerURLs。 http://gsp1/ReportServer or http://gsp2/ReportServer. In the Browser it is always https://abc.myinfocenter.net/_vti_bin/ReportServer,但是从上面的变量代码可以看出,_vti_bin被替换了。

问题似乎在于,当您通过 Sharepoint 加载报告时,您正在使用 Globals!ReportServerUrl 值检索 Sharepoint 服务器信息。但是,对于不同 SSRS 服务器上的订阅,您将检索不同的服务器值:生成订阅的服务器。 SharePoint 知道它在哪个服务器上,并且可以在您通过 SharePoint 站点访问报告时告诉 SSRS。但是,当您直接在 SSRS 服务器上生成报告时,SSRS 服务器甚至不知道 SharePoint 站点的存在。

要解决此问题,您需要将 SharePoint 站点的 URL 告知 SSRS 服务器。您可以将 SharePoint URL 硬编码到变量或其他地方的表达式中,但这有点难以维护。我建议通过以下方式解决此问题,使维护更容易、更透明:

  1. 在您的报告中创建一个名为 SharePointURL 的新参数。将默认值设置为 https://abc.myinfocenter.net/_vti_bin/ReportServer 或报告在浏览器中正确生成时的任何值。您将其作为参数执行此操作的原因是,如果您的 SharePoint 站点发生更改,则更易于维护。将此参数设置为隐藏或内部。

  2. 更改变量的表达式以合并 SharePointURL 参数。

新变量表达式:

=Replace(IIF(Globals!RenderFormat.Name = "RPL",Globals!ReportServerUrl,Parameters!SharePointURL.Value),"/_vti_bin","/_layouts/15") + "/RSViewerPage.aspx?rv:RelativeReportUrl=/SSRS%20Library/Rx Transaction Detail.rdl"

希望这能解决您的问题。