Multivalues en Reporting Services
Hoy he estado trabajando en un informe donde se necesitaba pasar varios valores a un campo de una SQL. Aunque puede haber más de una forma, yo voy a explicar dos formas de hacerlo.
Primera. Partiendo de que tenemos nuestro dataset con la query (por ejemplo: Select Nombre, Apellido From Personas) ya añadida, pasamos a crear el where.
Basta con poner algo así:
Select Nombre, Apellido From Personas Where Apellido in (@Apellidos)
Al poner @Apellidos, el dataset nos creará automáticamente un parámetro con el nombre de este. Lo podemos ver en el menú informe/parámetros.
Además, nos crea en las propiedades del dataset, pestaña parametros una nueva línea que será algo así:
Name: @Apellidos (equivalente al parámetro añadido por nosotros)
Value: =Parameters!Apellidos.Value (Apellidos es el parámetro creado por el diseñador y que podemos ver como ya dije antes en el menú informe, lo demás es una forma de llamarlo SSRS y no es SQL, sino expresiones del diseñador)
Pues bien, si el valor del where fuera algo así: Where apellidos = @parametro, ya bastaría pero como nuestro parámetro llevará el in, necesitamos cambiar el Value de =Parameters!Apellidos.Value a Join(Parameters!Apellidos.Value, “,”)
Segunda. En un dataset (y partiendo de que aún no se crearon los parámetros anteriores), la SQL puede estar escrita como tal o tratarla como una cadena de Visual Basic. Pues bien para tratarla como una cadena pasaremos a poner nuestra SQL de la siguiente forma:
= “Select Nombre, Apellido From Personas”
De esta forma se ejecutaría igual que antes. ¿Como le añadimos el parámetro? Pues creamos un parámetro (menú informe, parámetros) y añadimos la siguiente SQL:
= “Select Nombre, Apellido From Personas Where Apellido in (‘” & Join(Parameters!Apellidos.Value, “’,’”) & “’”)
Si os fijáis es lo mismo que antes, pero de diferente forma.
Nota: Dependiendo del tipo de datos, necesitará o no las comillas ;)
Espero que os haya sido de utilidad.
Un Saludo