Fran Diaz

Reporting Services, Business Intelligence, tecnologías Microsoft y otros

Email Notifications

Recent Posts

Tags

News

Community

Comunidades

  • OnobaNET
  • Grupo de usua
  • INETA
  • Culminis
  • Zona de Grupos de Usuarios Online
  • Foro MSDN Español: Colaborador
  • CartujaDotNet

Webs Amigas

Archives

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

Posted: 21/4/2009 21:45 por Fran Díaz | con 7 comment(s) |
Comparte este post:

Comentarios

Antonio Gago ha opinado:

Felicidades por este post,

Me ha funcionado la segunda forma contra un AS/400, y en la función Join le he puesto ", " (coma más espacio) ya que la lista de valores son número y el AS/400 al juntar dos número por una coma entiende que es un solo número.

Un saludo.

# April 30, 2009 5:26 PM

Mau ha opinado:

Es posible trabajar multivalues con salto de reportes y ademas con SP's??

# November 24, 2009 6:19 PM

Isabel ha opinado:

Hola,

Por un momento pensé que había encontrado lo que necesitaba: para un parámetro multivalor en as/400 definía el join y el resultado me quedaba:

"'" & Replace(Join(Parameters!Gama.Value,  "','")," ","") & "'" sin embargo por lo visto el as/400 lo coge como si fuera un sólo valor y me da un error de truncamiento de caracteres por la derecha. ¿Alguna idea? Ya no sé qué probar...

Muchas gracias anticipadas...

# January 19, 2010 6:39 PM

Oscar ha opinado:

Hola.

Tengo un problema con multivalues que no se si me podras ayudar. Tengo un report con dos parametros fijos y tres con multivalores. Al hacer click en un campo del listado lanzo otro report al que quiero pasarle como parametros, lo parametros del listado original. Con dos de los parametros multivalorados no tengo problema porque se lanza solo para el valor de la celda, pero al otro le quiero pasar TODOS los multivalores seleccionados.

Cuando defino el report de salto, le asigno los parametros del resto de valores, pero el que tiene que ser multivalorado lo no puedo pasar. Le he puesto el Join(Parameters!tipuscarnet.value,",") y tampoco me funciona.

¿Como lo podria pasar? ¿se te ocurre?

Muchas gracias.

# March 15, 2010 11:52 AM

Sofia ha opinado:

Buenos dias!!

Tengo una consulta que hasta ahora no he encontrado en ningun blog...estoy usando parametros multivalues, pero necesito saber cual es la limitacion de valores que le puedo pasar al parametro...algo escuche como que solo te deja pasarle 4000 0 10000 valores solamente, sabes algo de esto? en el caso que si...como hago si necesito pasar mas de esa cantidad??

Muchas gracias!

# July 23, 2010 3:07 PM

Erik Espinosa ha opinado:

Muchas Gracias por el tip. Me sirvió mucho. En cuanto pueda aportare alguna cuestión que sirva de ayuda para todos. Saludos

# September 14, 2010 6:07 PM

Antonio Gago ha opinado:

Sofía,

podrías pensar en utilizar una tabla de apoyo en la que guardes los valores que necesites y en la consulta donde utilices el IN() poner IN(SELECT campo FROM TabladeApoyo)

un saludo.

# November 25, 2010 6:28 PM