2013-08-01 159 views
10

我有一個報告傳遞用於訪問salesforce.com的ID。我想從URL超鏈接打開SFDC作爲新頁面。但是,我沒有做任何事情似乎在工作!在新窗口中打開SSRS URL

= 「JavaScript的:無效(window.open(」!https://na5.salesforce.com/&領域id.Value, '_空白'))」

域ID值是正在傳遞的SFDC ID!。我正在嘗試這個表達無濟於事!

我知道這是非常簡單的,但我只是沒有找到它。預先感謝您的幫助!

更新!

想通了!根據記錄,語法是:

= 「JavaScript的:無效(window.open( 'https://na5.salesforce.com/」!&字段id.Value & 「'))」

回答

6

爲了記錄在案,與你原來的問題語法是你試圖從引用一個SSRS字段去輸入一個字符串而沒有正確地分開兩個字符串。如果你想你以前的語法來工作(不刪除目標窗口的名稱(例如,「_blank」),你會做這樣的:

="javascript:void(window.open('https://na5.salesforce.com/" & Fields!id.Value & "','_blank'))" 

我這個掙扎了很長一段時間,但你可以這些相當複雜,只要你仔細地把所有東西放在一起就可以了,你也可以在同一個動作表達式中添加多個javascript命令(但是沒有函數),下面是我最複雜的SSRS Go-to-URL Action命令之一:

="Javascript:" 
    & IIF(left(Fields!Name.Value,11)="RESTRICTED-", 
     "alert('Restricted!'); ","") & IIF(Fields!Name_Alert.Value = 1, "alert('Alternate Alert!'); ","") 
    & "void(window.open('" 
    & Globals!ReportServerUrl 
    & "/Pages/ReportViewer.aspx?%2fJPD%2fPO_Dashboard%2fJuvenile_Profile&rs:Command=Render" 
    & "&rc:Parameters=true" 
    & "&Emp_Number=" 
    & Parameters!Param1.Value 
    & 「&ID=" & Fields!ID.Value & "'));" 

關鍵是要確保所需的任何及所有必要的單引號的javascript顯示了在字符串中(即「'」)。

+1

Per Stefan Steiger關於PDF和Excel報告的觀點,您可以輕鬆地將URL的JavaScript部分封裝到IIF語句中,如果您使用內置的RenderFormat字段將其導出爲PDF或Excel版本,則會刪除JavaScript SSRS 2008 R2或更高版本。如果您使用的是2008年或之前版本,則可以使用布爾參數實現相同的結果。如果您對如何回覆此評論有疑問。 –

0

我看過這個問題,並且多次回答,我想知道是否更容易編寫C#函數來進行此調用以避免引用的複雜性。

1

Nonono,請勿使用="javascript:void(window.open(
首先,它打破PDF & Excel報表,
和第二,它不IE11工作,可能還 測試它,只是工作在Chrome我。
第三,把它放在一起是一團糟。

有一個更容易&更好的解決方案:
添加&rc:LinkTarget=_blank到您的報告訪問的URL,如:

https://your-domain.com/ReportServer/Pages/ReportViewer.aspx?%2fJPD%2fPO_Dashboard%2fJuvenile_Profile&rs:Command=Render&rc:LinkTarget=_blank 

,它會在新窗口中打開。

編輯:
如果你想使自己的顯示頁面:

這是你如何讓所有的報告:

USE [ReportServer$MSSQL_2008_R2] 

SELECT 
    [ItemID] 
    ,[Path] 
    ,[Name] 
    ,[ParentID] 
FROM [Catalog] 
WHERE Type = 2 

這就是你怎麼可以顯示所有文件夾/報道在x級

;WITH CTE AS 
(
    SELECT 
     [ItemID] 
     ,[Path] 
     ,[Name] 
     ,[ParentID] 
     ,0 AS lvl 
     ,CAST([Name] AS nvarchar(MAX)) AS RecursivePath 
    FROM [Catalog] 
    WHERE [ParentID] IS NULL 


    UNION ALL 

    SELECT 
     [Catalog].[ItemID] 
     ,[Catalog].[Path] 
     ,[Catalog].[Name] 
     ,[Catalog].[ParentID] 
     ,cte.lvl +1 AS lvl 
     ,CAST(cte.RecursivePath + '/' + [Catalog].[Name] AS nvarchar(MAX)) AS RecursivePath 
    FROM CTE 
    INNER JOIN [Catalog] 
     ON [Catalog].ParentID = CTE.ItemID 



) 

SELECT * FROM CTE 
WHERE lvl = 1 
ORDER BY lvl, Path 

如果您只想要文件夾:

WHERE Type = 1 

如果只想數據來源:

WHERE Type = 5 
+0

@Timbo:當您打開瀏覽器並使用http:// machine-name/ReportServer訪問http://your-domain.com/ReportServer或本地/ Intranet時,可以找到訪問URL。您還可以讀取reportserver數據庫中的所有鏈接。如果您的reportserver具有非標準實例名稱,例如MSSQL_2008_R2,即:http:// localhost/ReportServer_MSSQL_2008_R2。在RS 2005中,那是ReportServer $ MSSQL_2005,注意從$到_的變化。 –

1

如果你想鏈接到外部URL,並希望鏈接到兩個報表查看器內的工作,如果你導出到Excel中例如,我使用下面的表達式。

=IIF(
    Globals!RenderFormat.Name = "RPL", 
"javascript:void(window.open('http://www.domain.com/page/" & Fields!Page_ID.Value & "','_blank'))", 
    "http://www.domain.com/page/" & Fields!Page_ID.Value 
) 

它將使用JavaScript,如果從瀏覽器的報告中查看,則使用JavaScript,否則使用標準鏈接。