SSRS预定订阅超链接无效

时间:2016-05-13 17:08:17

标签: excel vba excel-vba reporting-services ssrs-2014

我目前正在使用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电子邮件文件中的链接时遇到的错误。 enter image description here

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

  3. 新变量表达式:

    =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"
    

    希望这能解决您的问题。