Saltar al contenido

Pasar múltiples valores para un solo parámetro en Reporting Services

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *