sql >> Base de Datos >  >> RDS >> Sqlserver

SSRS no muestra registros en el informe, pero la consulta devuelve resultados

Adivinaré y diré que es 'cómo' está pasando el parámetro de valor múltiple. Personalmente, cuando trato con SSRS, uso vistas, funciones de tabla o simplemente selecciono, ya que SSRS puede entender de forma nativa que esto:

Where thing in (@Thing)

En realidad significa esto en SSMS:

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

Supongo que su proceso está tomando una cadena que en realidad es una matriz separada por comas. Cuando hace un parámetro que toma una matriz de cadenas como '1,2,3,4' y está abordando el procedimiento con algo así como un parámetro de 'Texto' que acepta múltiples valores que especifica o obtiene de una consulta, esencialmente necesita ' Únase a los parámetros si su procedimiento toma un valor de una cadena que contiene la matriz. EG:Proc llamado dbo.test se ejecuta para devolver filas para los valores 1,2,4 para un parámetro ID que se muestra como:

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

Si quisiera ejecutar el proceso en SSRS con este valor y tuviera un parámetro de valor múltiple llamado 'IDS', tendría que ensamblar la matriz manualmente en una función en SSRS como:

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

Esencialmente, decirle al proceso que ejecute un parámetro 'IDS' uniendo los múltiples valores en una cadena de valores separados por comas. Haga esto en el conjunto de datos en el panel izquierdo donde se enumeran los 'Parámetros' en lugar de especificar el Parámetro como si fuera [@IDS]. En su lugar, haga clic en 'Fx' y coloque la función anterior.

Por esta razón, soy un gran defensor de las vistas, las selecciones y las funciones de tabla, ya que puede usar la lógica de predicados para encargarse de esto.