Mantén la atención porque en este enunciado hallarás el resultado que buscas.
Solución:
Aunque la solución de John Sansom funciona, hay otra manera de hacerlo, sin tener que usar un UDF de valor escalar potencialmente ineficiente. En el informe de SSRS, en la pestaña de parámetros de la definición de consulta, establezca el valor del parámetro en
=join(Parameters!.Value,",")
En su consulta, puede hacer referencia al valor de esta manera:
where yourColumn in (@)
Esto es lo que uso cuando paso un parámetro de selección múltiple a otro parámetro de selección múltiple.
=SPLIT(JOIN(Parameters!.Value,","),",")
Esta es una de las funciones compatibles deficientes en SQL Reporting Services.
Lo que debe hacer es pasar todos los elementos seleccionados como un solo string a su procedimiento almacenado. Cada elemento dentro de la string estarán separados por una coma.
Lo que hago entonces es dividir el string utilizando una función que devuelve el proporcionado string como mesa Vea abajo.
ALTER FUNCTION [dbo].[fn_MVParam]
(@RepParam nvarchar(4000), @Delim char(1)= ',')
RETURNS @Values TABLE (Param nvarchar(4000))AS
BEGIN
DECLARE @chrind INT
DECLARE @Piece nvarchar(100)
SELECT @chrind = 1
WHILE @chrind > 0
BEGIN
SELECT @chrind = CHARINDEX(@Delim,@RepParam)
IF @chrind > 0
SELECT @Piece = LEFT(@RepParam,@chrind - 1)
ELSE
SELECT @Piece = @RepParam
INSERT @Values(Param) VALUES(CAST(@Piece AS VARCHAR))
SELECT @RepParam = RIGHT(@RepParam,LEN(@RepParam) - @chrind)
IF LEN(@RepParam) = 0 BREAK
END
RETURN
END
Luego puede hacer referencia a los resultados en la cláusula where de su consulta principal de la siguiente manera:
where someColumn IN(SELECT Param FROM dbo.fn_MVParam(@sParameterString,','))
Espero que encuentre esta solución útil. Por favor, siéntase libre de plantear cualquier pregunta que pueda tener.
Saludos, Juan
valoraciones y reseñas
Tienes la opción de corroborar nuestra función mostrando un comentario y dejando una valoración te damos las gracias.