Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SSRS n'affiche aucun enregistrement dans le rapport mais la requête renvoie des résultats

Je vais deviner et dire que c'est "comment" vous passez le paramètre multi-valeur. Personnellement, lorsque j'utilise SSRS, j'utilise des vues, des fonctions de table ou simplement des sélections, car SSRS peut comprendre nativement que ceci :

Where thing in (@Thing)

Signifie en fait ceci dans SSMS :

Where thing in (@Thing.Value1, @Thing.Value2, @Thing.Value3, etc...)

Je suppose que votre proc prend une chaîne qui est en fait un tableau séparé par des virgules. Lorsque vous faites un paramètre qui prend un tableau de chaînes comme '1,2,3,4' et que vous adressez la procédure avec quelque chose comme un paramètre 'Texte' acceptant plusieurs valeurs que vous spécifiez ou obtenez à partir d'une requête, vous devez essentiellement ' Join' les paramètres si votre procédure prend une valeur d'une chaîne qui contient le tableau. EG :La procédure appelée dbo.test s'exécute pour renvoyer des lignes pour les valeurs 1,2,4 pour un paramètre. Les identifiants sont affichés comme :

exec dbo.test @ids = '1,2,4'

Si je voulais exécuter le proc dans SSRS avec cette valeur et que j'avais un paramètre à plusieurs valeurs appelé 'IDS', je devrais assembler le tableau manuellement dans une fonction dans SSRS comme :

=JOIN(Parameters!IDS.Value, ",")

Essentiellement, dire au proc d'exécuter un paramètre 'IDS' en joignant les multiples valeurs dans une chaîne de valeurs séparées par des virgules. Vous faites cela dans l'ensemble de données sur le volet de gauche où il répertorie les "Paramètres" au lieu de spécifier le paramètre car c'est comme [@IDS] vous cliquez sur le "Fx" à la place et mettez la fonction ci-dessus.

Pour cette raison, je suis un grand partisan des vues, des sélections et des fonctions de table, car vous pouvez utiliser la logique des prédicats pour vous en occuper.