visual unable tutorial the studio services configurar sql-server reporting-services ssms ssrs-2012 ssdt

sql-server - unable - sql server reporting services 2017



Los registros de SSRS no aparecen cuando se usa(seleccionar todo) pero es cuando se selecciona un valor particular (2)

Tengo un informe que tiene un parámetro de valor múltiple. Tiene valores disponibles (1, 2, 3, 4, 5 y en blanco). El valor en blanco no es NULO, es solo una celda vacía.

Para fines de prueba, solo debe haber un registro que se muestre. El registro tiene un valor en blanco en la celda que estoy usando para filtrar en mi procedimiento almacenado.

En el menú desplegable de parámetros, veo todas las opciones. Si elijo la opción (Seleccionar todo), no obtengo el registro que quiero. Sin embargo, si elijo solo el valor en blanco, obtengo el registro que quiero. Actualicé el registro manualmente a "2". Elijo (Seleccionar todo) y obtengo el registro. Elijo solo el valor "2" y obtengo el registro. Si elimino el valor nuevamente para dejar el valor en blanco, solo obtengo el registro si solo elijo la opción "En blanco" en el menú desplegable.

Hago un cuadro de texto para mostrar el valor del parámetro y se muestra en blanco cuando se selecciona solo o con otros valores.

¿Qué me estoy perdiendo en mi procedimiento almacenado o en mi informe? Gracias por adelantado.


Cuando tiene un parámetro de selección múltiple, SSRS debe enviar una lista de valores separados por comas a su procedimiento almacenado. Usted es responsable de dividir estos elementos en algo en lo que pueda unirse.

En el informe en sí, no se obtiene la lista de valores en una cadena muy bien envuelta para mostrar. Tuve que usar código para iterar sobre los valores en el parámetro.

Probé lo que está haciendo SSRS cuando tiene un valor disponible en blanco. Creé un informe de prueba que tenía las seis opciones disponibles y luego un procedimiento almacenado para forzar la salida de los valores seleccionados:

CREATE PROCEDURE dbo.Test_RPT ( @TestMultiSelect varchar(1000) ) AS SELECT @TestMultiSelect RVAL

En el informe, solo tenía un cuadro de texto único que mostraba este campo RVAL .

Si pongo la opción en blanco al inicio, la salida fue 1,2,3,4,5 . Si la opción en blanco estaba en cualquier otra ubicación, estaba incluida: 1,2,3,,4,5 , 1,2,3,4,5,


En los casos en que es necesario pasar múltiples valores a la cláusula Sql IN a un procedimiento almacenado del conjunto de datos del informe SSRS, se requieren cambios leves en el procedimiento almacenado:

Ver la cláusula Sample WHERE en un SP

... AND Courses.Type_Code IN (@Type_Code)

Agregue una función SplitString () para dividir los parámetros pasados ​​en función de un delimitador.

El cuerpo de SplitString () se verá así:

CREATE FUNCTION [dbo].[SplitString] ( @pString VARCHAR(8000), @pDelimiter CHAR(1) ) RETURNS @Values TABLE (Value VARCHAR(50)) AS BEGIN DECLARE @xml as XML; SET @xml = cast((''<X>''+replace(@pString, @pDelimiter, ''</X><X>'')+''</X>'') as xml); INSERT @Values SELECT N.value(''.'', ''varchar(50)'') as value FROM @xml.nodes(''X'') as T(N); RETURN END;

Finalmente, la cláusula IN se verá así:

... AND Courses.Type_Code IN (SELECT * FROM dbo.SplitString(@type_code,'',''))