2009-08-11 229 views
4

我有兩個使用SSRS 2005構建的報表。第一個報表設置爲在單擊特定字段時導航到第二個報表。我使用類似於在文本框中的「跳轉到URL」屬性下面的表達式:在SSRS查詢字符串中傳遞多值參數的值

="javascript:void(window.open('http://server/reportserver?%2fFolder%2fMyReport&rs:Command=Render&Date=" & Fields!Date.Value & "&MachineId=" & Fields!Machine.Value & "'))" 

上有第二份報告的多值參數。調用此報告時,我需要在URL查詢字符串中爲此參數傳遞多個值。有沒有辦法在報表的查詢字符串中傳遞參數的多個值?或者你可以傳遞一個參數,這會導致選擇全選值?

謝謝。

回答

23

只需添加其他查詢字符串參數即可。

例如,要傳遞的參數

Date:  2009-06-01 
MachineID: Machine1, Machine2, Machine3, Machine4 

一個名爲Folder\MyReport名爲server服務器上的報告,你可以使用的網址:

http://server/reportserver?%2fFolder%2fMyReport&rs:Command=Render&Date=2009-06-01&MachineId=Machine1&MachineId=Machine2&MachineId=Machine3&MachineId=Machine4 
+0

,完美的工作!謝謝你的幫助。 – Jamie 2009-08-11 18:49:47

+0

工作完美,我很久以前就被這個問題困住了。謝謝 – Shawn 2013-01-15 09:38:56

+0

這不適用於我... 'System.ServiceModel.FaultException:此報告需要報告參數'codListaPrioridade'的默認值或用戶定義的值。要運行或訂閱此報告,您必須提供參數值。' 有何建議? – MarceloBarbosa 2015-03-11 16:16:37

3

使用join(Parameters!<name>.Value,"&<param_name>=")在網址爲多值參數。

如果您將這些參數傳遞到數據集中,則在傳入參數時需要執行join(Parameters!<param name>.Value),然後在SQL中使用分割函數。這一個效果很好:

ALTER FUNCTION [dbo].[fnSplitParam] 
    (@RepParam nvarchar(4000), @Delim char(1)= ',') 
RETURNS @Values TABLE (Param nvarchar(4000))AS 
    BEGIN 
    DECLARE @chrind INT 
    DECLARE @Piece nvarchar(100) 
    SELECT @chrind = 1 
    WHILE @chrind > 0 
    BEGIN 
     SELECT @chrind = CHARINDEX(@Delim,@RepParam) 
     IF @chrind > 0 
     SELECT @Piece = LEFT(@RepParam,@chrind - 1) 
     ELSE 
     SELECT @Piece = @RepParam 
     INSERT @Values(Param) VALUES(CAST(@Piece AS VARCHAR)) 
     SELECT @RepParam = RIGHT(@RepParam,LEN(@RepParam) - @chrind) 
     IF LEN(@RepParam) = 0 BREAK 
    END 
    RETURN 
    END 

我建議使用單值的方法,如果最終用戶沒有直接選擇的參數,因爲它可以節省您的每個參數2個字符的URL。

+0

謝謝,傑夫!這正是我需要的 - 在網絡上的其他任何地方都找不到。 – Sev09 2015-08-18 22:04:24

0

我一直在試圖做類似的事情,以OP,發現把這個在URL中的工作,選擇所有

相關問題