2016-05-13 39 views
1

我目前正在使用Reporting Services 2014.我使用以下代碼可以在SharePoint站點本身上使用JavaScript彈出窗口。該代碼還解決了通過一個if語句導出到Excel鏈接的問題,該語句 評估RenderFormat是否在站點上被查看,或者它是否是另一種格式(Excel,Word,PDF等)。 iif語句使用一個用適當的站點替換ReportServerURL的變量。當使用站點上的鏈接和從站點導出到Excel時,一切正常。SSRS計劃訂閱超鏈接不起作用

當我設置發送報告的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" 

這是試圖打開訂閱鏈接練成電子郵件文件時,我目前得到的錯誤。 enter image description here

我放棄了[& ReportServerUrl]文本框,發現路徑是不是在計劃認購相同,因爲它是在瀏覽器或導出到Excel中。我發現有2個可能的訂閱使用的ReportServerURL。 http://gsp1/ReportServerhttp://gsp2/ReportServer。在瀏覽器中,它始終是https://abc.myinfocenter.net/_vti_bin/ReportServer,但正如您從上面的可變代碼中所看到的,_vti_bin被替換。

+0

讓我看看我是否理解您的問題,當您通過瀏覽器查看報告時,報告中的鏈接指向正確的深入報告並正確呈現所需的報告。當您通過訂閱接收Excel版本的報告時,報告中的鏈接無法正常工作。當你點擊Excel文件中的這些鏈接時,會發生什麼?你會得到什麼錯誤?請使用此信息修改您的問題。 –

+0

這是正確的,鏈接在瀏覽器中正常工作,當我將報告導出到Excel時,它們也能正常工作。問題是當我收到excel文件作爲訂閱。我將繼續修改我的問題,因爲我無法在評論中添加屏幕截圖 – Istaley

回答

2

看來問題在於,當您通過Sharepoint加載報表時,您正在使用Globals!ReportServerUrl值檢索Sharepoint服務器信息。但是,通過訂閱不同的SSRS服務器,您將檢索不同的服務器值:生成訂閱的服務器。 SharePoint知道它在服務器上,並可以告訴SSRS,當您通過SharePoint網站訪問報告時。但是,當您直接在SSRS服務器上生成報告時,SSRS服務器不知道SharePoint網站是否存在。

爲了解決這個問題,您需要告訴SSRS服務器SharePoint網站的URL。您可以將SharePoint網址硬編碼爲變量或其他地方的表達式,但這樣做有點難以維護。我會建議在以下方式,使維護更容易一些,更透明的解決這個問題:

  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" 

希望這將解決您的問題。

+0

非常感謝您的快速響應。我最初嘗試在過去創建一個參數,以確定是否將JavaScript用於彈出窗口(在瀏覽器中)或簡單地導航到從導出到Excel的新選項卡。該新參數在預訂訂閱時會導致錯誤。我很抱歉,我不記得錯誤的描述。我最終採取了改變它的代碼並使其成爲一個變量。是否有任何理由我不能做你上面陳述的另一個變量,而不是作爲參數? – Istaley

+0

我實際上從來沒有使用變量,但我想你可以。請記住,隱藏參數不需要默認值。但是,如果它們具有默認值,那麼這就是訂閱所使用的。此外,對於隱藏參數,我不認爲訂閱會讓您選擇更改值。 –

+0

不幸的是,RenderFormat不允許用作變量。我收到以下錯誤消息:「報表'body'的變量表達式指的是全局變量RenderFormat,它對這種類型的報表項表達式無效。我也應該提到我們使用相同的SSRS解決方案生產站點,所以不僅有一個abc站點,還有一個def站點 – Istaley