1

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

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

这是我目前用于在网站上使用超链接并从网站导出到 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 电子邮件文件中的链接时遇到的错误。 在此处输入图像描述

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

4

1 回答 1

2

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

为了解决这个问题,您需要告诉 SSRS 服务器 SharePoint 网站的 URL。您可以将 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"

希望这能解决您的问题。

于 2016-05-19T13:49:52.940 回答