2009-08-11 8 views
4

J'ai deux rapports construits à l'aide de SSRS 2005. Le premier rapport est défini pour accéder à la seconde lorsqu'un champ spécifique est cliqué. J'utilise une expression similaire à ce qui suit dans la propriété « Jump to URL » de la zone de texte:Valeurs de passage pour le paramètre à valeurs multiples dans la chaîne de requête SSRS

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

Il y a un paramètre multi-valeur sur le deuxième rapport. Je dois passer plusieurs valeurs pour ce paramètre dans la chaîne de requête d'URL lors de l'appel de ce rapport. Existe-t-il un moyen de transmettre plusieurs valeurs pour un paramètre dans la chaîne de requête d'un rapport? Ou pouvez-vous passer un paramètre qui entraînera la sélection de la valeur Sélectionner tout?

Merci. Il suffit d'ajouter des paramètres de chaîne de requête supplémentaires.

Répondre

23

Par exemple, pour transmettre les paramètres

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

un rapport nommé Folder\MyReport sur un serveur nommé server, vous pouvez utiliser l'URL:

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

Cela a parfaitement fonctionné! Merci de votre aide. – Jamie

+0

Fonctionnement Parfait, j'étais coincé avec celui-ci il y a longtemps. merci – Shawn

+0

Cela ne fonctionne pas pour moi ... 'System.ServiceModel.FaultException: Ce rapport nécessite une valeur par défaut ou définie par l'utilisateur pour le paramètre de rapport 'codListaPrioridade'. Pour exécuter ou vous abonner à ce rapport, vous devez fournir une valeur de paramètre. » Un conseil? – MarceloBarbosa

3

Utilisez join(Parameters!<name>.Value,"&<param_name>=") dans l'URL pour les paramètres multivaluées .

Si vous transmettez ces paramètres dans un ensemble de données, vous devez effectuer un join(Parameters!<param name>.Value) lorsque vous transmettez le paramètre, puis utiliser une fonction de division dans SQL. Celui-ci fonctionne bien:

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 

Je recommande d'utiliser la méthode unique d'une valeur si l'utilisateur final ne doit pas sélectionner les paramètres directement car il vous permet d'économiser 2 caractères par paramètre dans l'URL.

+0

Merci, Jeff !! C'est exactement ce dont j'avais besoin - je n'ai pas pu le trouver ailleurs sur le web. – Sev09

0

J'ai essayé de faire quelque chose de semblable à l'OP, et trouvé mettre cette dans l'URL fonctionne pour sélectionner tous

Questions connexes