Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SSRS zeigt keine Datensätze im Bericht, aber die Abfrage gibt Ergebnisse zurück

Ich nehme eine Vermutung an und sage, es ist "wie" Sie den mehrwertigen Parameter übergeben. Persönlich verwende ich beim Umgang mit SSRS Ansichten, Tabellenfunktionen oder nur Auswahlen, da SSRS dies von Haus aus verstehen kann:

Where thing in (@Thing)

Eigentlich bedeutet dies in SSMS:

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

Ich vermute, Ihr Proc nimmt eine Zeichenfolge, die eigentlich ein durch Kommas getrenntes Array ist. Wenn Sie einen Parameter verwenden, der ein String-Array wie '1,2,3,4' verwendet, und Sie die Prozedur mit so etwas wie einem 'Text'-Parameter adressieren, der mehrere Werte akzeptiert, die Sie entweder angeben oder von einer Abfrage erhalten, müssen Sie im Wesentlichen ' Verbinden Sie die Parameter, wenn Ihre Prozedur einen Wert einer Zeichenfolge annimmt, die das Array enthält. ZB:Der Prozess namens dbo.test wird ausgeführt, um Zeilen für die Werte 1,2,4 für Parameter-IDs zurückzugeben, die wie folgt angezeigt werden:

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

Wenn ich den Prozess in SSRS mit diesem Wert ausführen wollte und ich einen mehrwertigen Parameter namens „IDS“ hätte, müsste ich das Array manuell in einer Funktion in SSRS wie folgt zusammenstellen:

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

Sagen Sie dem Prozess im Wesentlichen, dass Sie einen Parameter „IDS“ ausführen, indem Sie die mehreren Werte in einer Kette von durch Kommas getrennten Werten zusammenfügen. Sie tun dies im Datensatz im linken Bereich, wo es „Parameter“ auflistet, anstatt den Parameter anzugeben, da es wie [@IDS] ist, klicken Sie stattdessen auf „Fx“ und fügen die obige Funktion ein.

Aus diesem Grund bin ich ein großer Befürworter von Ansichten, Auswahlen und Tabellenfunktionen, da Sie die Prädikatenlogik verwenden können, um sich darum zu kümmern.