2016-05-13 13 views
1

Ich verwende derzeit Reporting Services 2014. Ich verwende den folgenden Code, um ein Javascript-Popup-Fenster auf der Sharepoint-Website selbst verwenden zu können. Der Code adressiert auch den Export nach Excel-Link über eine iif-Anweisung, die wertet, ob das RenderFormat auf der Website angezeigt wird oder ob es ein anderes Format (Excel, Word, PDF usw.) ist. Die Anweisung iif verwendet eine Variable, die die ReportServerURL durch die entsprechende Site ersetzt. Alles funktioniert gut, wenn Sie die Links auf der Website und beim Exportieren von der Site nach Excel verwenden.SSRS Geplante Abonnement-Hyperlinks funktionieren nicht

Das Problem tritt auf, wenn ich eine geplante Abonnement einrichten, die eine Excel-Datei des Berichts sendet. Die ReportSerURL unterscheidet sich von den obigen Situationen. Wir haben zwei Sites, die http://gsp1/ReportServer und http://gsp2/ReportServer in der geplanten Excel-Abonnementdatei verwenden.

Dies ist der Code, den ich derzeit für die Verwendung von Hyperlinks auf der Website und Export nach Excel von der Website verwende. Gibt es eine Möglichkeit, dass ich auch eine Logik einbauen kann, um die geplanten Subskriptionsdateien zu adressieren?

SSRS URL Aktion (Verwendet unter Variable)

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

Variable

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

Dies ist der Fehler ich zur Zeit, wenn Sie einen Link in einem Abonnement zu öffnen versuchen, E-Mail-Excel-Datei. enter image description here

Ich ließ eine [& ReportServerUrl] Textbox und festgestellt, dass der Pfad in dem geplanten Abonnement ist nicht das Gleiche wie sie im Browser oder beim Export ist zu übertreffen. Ich habe festgestellt, dass es 2 mögliche ReportServerURLs gibt, die das Abonnement verwendet. http://gsp1/ReportServer oder http://gsp2/ReportServer. Im Browser ist es immer https://abc.myinfocenter.net/_vti_bin/ReportServer, aber wie Sie aus dem Variablencode oben sehen können, wird _vti_bin ersetzt.

+0

Lassen Sie mich sehen, wenn ich Ihr Problem verstehe, wenn Sie den Bericht über einen Browser anzeigen, verweisen die Links im Bericht auf den richtigen Drilldown-Bericht und rendern den gewünschten Bericht korrekt. Wenn Sie eine Excel-Version des Berichts über ein Abonnement erhalten, funktionieren die Links im Bericht nicht ordnungsgemäß. Wenn Sie auf diese Links in der Excel-Datei klicken, was passiert? Welchen Fehler bekommst du? Bitte ändern Sie Ihre Frage mit diesen Informationen. –

+0

Das ist richtig, die Links funktionieren gut im Browser und wenn ich den Bericht nach Excel exportieren, funktionieren sie auch. Das Problem ist, wenn ich die Excel-Datei als Abonnement erhalte. Ich werde weitermachen und meine Frage ändern, weil ich keinen Screenshot in den Kommentar schreiben kann. – Istaley

Antwort

2

Es scheint, dass das Problem in der Tatsache liegt, dass beim Laden des Berichts über Sharepoint die Sharepoint-Serverinformationen mithilfe des Globals! ReportServerUrl-Werts abgerufen werden. Mit der Subskription auf einem anderen SSRS-Server erhalten Sie jedoch einen anderen Serverwert: den Server, der das Abonnement generiert. SharePoint weiß, auf welchem ​​Server es sich befindet und kann SSRS mitteilen, wenn Sie über die SharePoint-Website auf den Bericht zugreifen. Wenn Sie den Bericht direkt auf dem SSRS-Server generieren, hat der SSRS-Server jedoch keine Ahnung, dass die SharePoint-Website überhaupt existiert.

Um dies zu lösen, müssen Sie dem SSRS-Server die URL für die SharePoint-Website mitteilen. Sie könnten die SharePoint-URL fest in einen Ausdruck für die Variable oder anderswo codieren, aber das ist dann etwas schwieriger zu verwalten. Ich würde empfehlen, dieses Problem in der folgenden Art und Weise zu lösen, die Wartung ein bisschen einfacher und transparenter macht:

  1. Erstellen Sie einen neuen Parameter in Ihrem Bericht genannt SharePointURL. Setzen Sie den Standardwert auf https://abc.myinfocenter.net/_vti_bin/ReportServer oder was auch immer es ist, wenn der Bericht im Browser korrekt generiert wird. Der Grund, warum Sie dies als Parameter tun, ist, dass es einfacher zu pflegen ist, sollte sich Ihre SharePoint-Website ändern. Legen Sie diesen Parameter als ausgeblendet oder intern fest.

  2. Ändern Sie den Ausdruck für Ihre Variable so, dass sie den SharePointURL-Parameter enthält.

Neue Variable Expression:

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

Hoffentlich, dass Ihr Problem zu beheben.

+0

Vielen Dank für Ihre schnelle Antwort. Ich habe in der Vergangenheit versucht, einen Parameter zu setzen, um festzustellen, ob JavaScript für ein Popup-Fenster (im Browser) verwendet werden soll oder ob einfach von Exportieren nach Excel zu einem neuen Tab navigiert werden soll. Dieser neue Parameter verursachte Fehler beim Planen von Abonnements. Es tut mir leid, ich kann mich nicht an die Fehlerbeschreibung erinnern. Ich habe den Code schließlich geändert und verändert. Gibt es einen Grund, warum ich das, was Sie oben genannt haben, nicht als Parameter, sondern als eine andere Variable tun könnte? – Istaley

+0

Ich habe tatsächlich nie Variablen verwendet, aber ich nehme an, Sie könnten. Beachten Sie, dass versteckte Parameter keinen Standardwert erfordern. Wenn sie jedoch einen Standardwert haben, dann würde das die Subskription verwenden. Außerdem glaube ich, dass eine Subskription für versteckte Parameter nicht die Möglichkeit bietet, den Wert zu ändern. –

+0

Leider kann RenderFormat nicht als Variable verwendet werden. Ich erhalte die folgende Fehlermeldung: "Der Variablenausdruck für den Bericht 'body' bezieht sich auf die globale Variable RenderFormat, die für diese Art von Berichtselementausdruck nicht gültig ist. Ich hätte auch erwähnen sollen, dass wir dieselbe SSRS-Lösung für zwei separate verwenden Produktionsstandorte, also gibt es nicht nur eine abc-Site, sondern auch eine def-Site – Istaley