2009-08-11 10 views
4

Ich habe zwei Berichte mit SSRS 2005 erstellt. Der erste Bericht wird auf die zweite navigieren, wenn ein bestimmtes Feld angeklickt wird. Ich verwende einen Ausdruck ähnlich dem folgenden in der „Gehe zu URL“ Eigenschaft der Textbox:Übergeben von Werten für mehrwertige Parameter in SSRS-Abfragezeichenfolge

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

Es ist ein Multi-Parameterwert auf den zweiten Bericht. Ich muss beim Aufrufen dieses Berichts mehrere Werte für diesen Parameter in der URL-Abfragezeichenfolge übergeben. Gibt es eine Möglichkeit, mehrere Werte für einen Parameter in der Abfragezeichenfolge eines Berichts zu übergeben? Oder können Sie einen Parameter übergeben, der dazu führt, dass der Wert "Alle auswählen" ausgewählt wird?

Danke.

Antwort

23

Fügen Sie einfach zusätzliche Abfragezeichenfolgenparameter hinzu.

Zum Beispiel der Parameter

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

zu einem Folder\MyReport auf einem server namens Server mit dem Namen Bericht übergeben, können Sie die URL verwenden würden:

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

Das funktionierte perfekt zu wählen! Danke für Ihre Hilfe. – Jamie

+0

Working Perfect, ich war mit diesem vor langer Zeit fest. Danke – Shawn

+0

Das funktioniert nicht für mich ... 'System.ServiceModel.FaultException: Dieser Bericht erfordert einen Standardwert oder einen benutzerdefinierten Wert für den Berichtsparameter 'codListaPrioridade'. Um diesen Bericht auszuführen oder zu abonnieren, müssen Sie einen Parameterwert angeben. Irgendwelche Ratschläge? – MarceloBarbosa

3

Verwenden join(Parameters!<name>.Value,"&<param_name>=") für mehrwertige Parameter in der URL .

Wenn Sie diese Parameter in ein Dataset übergeben, müssen Sie eine join(Parameters!<param name>.Value) tun, wenn Sie den Parameter übergeben und dann eine Split-Funktion in SQL verwenden. Dies funktioniert gut:

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 

Ich empfehle die einzelwertige Methode zu verwenden, wenn der Endbenutzer muss nicht die Parameter direkt auswählen, da es Ihnen 2 Zeichen pro Parameter in der URL speichert.

+0

Danke, Jeff !! Das ist genau das, was ich brauchte - ich konnte das nirgendwo anders im Internet finden. – Sev09

0

Ich habe versucht, eine ähnliche Sache zu OP zu tun und fand in der URL diesen setzen funktioniert alles

Verwandte Themen