Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SSRS non mostra alcun record nel rapporto, ma la query restituisce i risultati

Farò un'ipotesi e dirò che è "come" stai passando il parametro multivalore. Personalmente, quando mi occupo di SSRS, utilizzo viste, funzioni di tabella o semplicemente selezioni poiché SSRS può capire nativamente che questo:

Where thing in (@Thing)

In realtà significa questo in SSMS:

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

Immagino che il tuo proc stia prendendo una stringa che in realtà è un array separato da virgole. Quando esegui un parametro che accetta una matrice di stringhe come '1,2,3,4' e stai affrontando la procedura con qualcosa come un parametro 'Testo' che accetta più valori che specifichi o ottieni da una query, devi essenzialmente ' Unisci' i parametri se la tua procedura accetta un valore di una stringa che contiene l'array. EG:Proc chiamato dbo.test viene eseguito per restituire le righe per i valori 1,2,4 per un parametro id sono mostrati come:

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

Se volessi eseguire il proc in SSRS con questo valore e avessi un parametro multivalore chiamato "IDS", dovrei assemblare l'array manualmente in una funzione in SSRS come:

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

In sostanza, dicendo al proc di eseguire un parametro "IDS" unendo i valori multipli in una catena di valori separati da virgole. Lo fai nel set di dati nel riquadro di sinistra dove elenca "Parametri" invece di specificare il parametro poiché è come [@IDS] fai invece clic su "Fx" e inserisci la funzione sopra.

Per questo motivo sono un grande sostenitore delle viste, delle selezioni e delle funzioni di tabella poiché puoi utilizzare la logica dei predicati per occuparti di questo.