Después del primer post de la serie sobre preguntas habituales en seminarios sobre SQL Server Reporting Services (SSRS), aquí tenemos la segunda entrega en la que nos centraremos en lo versátil que es SSRS gracias al juego que da el uso de parámetros. Como veréis, realmente se trata de una única sección, y en concreto de una pregunta y su correspondiente respuesta, la que trataremos en esta nueva entrega. Empecemos.
Parámetros de informe: ¿Cómo puedo poner el valor All de un parámetro de un informe?
Hay dos formas de conseguir esta funcionalidad:
- Opción 1: Aprovechando que en la definición de la consulta T-SQL que nos permite llenar el dataset podemos aprovechar las capacidades de programación de T-SQL, de manera que podemos añadir cierta lógica en la sentencia SELECT. Así, por ejemplo:
- Tendríamos un bloque IF que controla los casos en los que el usuario está filtrando por un valor concreto del parámetro.
- En el bloque ELSE tendríamos la sentencia T-SQL en la que se devuelven todos los resultados sin aplicar un parámetro en la clausula Where.
|
if @category <> 0 Begin SELECT * from dbo.vProductProfitability WHERE dbo.vProductProfitability.Year=@anyo and dbo.vProductProfitability.MonthNumberOfYear=@mes and dbo.vProductProfitability.CategoryKey = @category End else Begin SELECT * from dbo.vProductProfitability WHERE dbo.vProductProfitability.Year=@anyo and dbo.vProductProfitability.MonthNumberOfYear=@mes End –select para definir el filtro y que aplique a todos los registros SELECT ProductCategoryKey As CategoryKey, ProductCategoryName As Category FROM DimProductCategory union SELECT 0 As CategoryKey, ‘todos’ As Category |
- Opción 2: Aprovechando que SSRS nos permite trabajar con parámetros multivalor. Por ejemplo, si tengo una consulta que me permite filtrar por un cierto parámetro, haremos lo siguiente:
- Definir la query del dataset para que en lugar de utilizar el operador =, utilice IN.
- En la configuración del parámetro, simplemente marcamos el check Multivalue.
- De esta forma, al ejecutar el informe se ofrecerá la opción All Values:
- Y el resultado de aplicar el filtro (Select All) sería:
Y hasta aquí el segundo post de la serie de Preguntas y Respuestas sobre SSRS. Tengo algún capítulo más que añadir, pero esperaré a completarlo con más preguntas. Espero que os haya resultado interesante.
Juan Carlos: Muy bueno tu post, gracias a el aprendí como utilizar un parametro multivalor.
Me gustaría agregar una tercer forma de poner el valor All de un parámetro de un informe.
Primero debes establecer el parámetro (Ej:EstadoViaje), en caso que no se llene desde una consulta, colocas los valores posibles, (Ej para un parametro estado: “PENDIENTE”, “EN EJECUCION” y agregas el valor que define a todos los elementos “TODOS”)
Si en cambio lo llenas de una consulta debes confeccionarla de esta manera:
SELECT nombre
FROM Estados
union
select ‘TODOS’
Luego en la consulta principal colocas como clausula de restriccion un CASE WHEN de forma tal que si colocas “TODOS” no aplique restricción o aplique una restriccion verdadera (a modo que no restrinja los datos) y en caso que no sea “TODOS” que si aplique el filtro segun el dato seleccionado
SELECT ….
JOIN …
FROM Viajes …
WHERE…
AND Viajes.estado =
CASE WHEN @EstadoViaje=’TODOS’
THEN Viajes.estado
ELSE @EstadoViaje
END
De esta forma no tienes que hacer 2 consultas como planteaste en la primer opción
Saludos!
Comentario por Gonzalo Prax — septiembre 12, 2008 @ 15:56 |
Hola Gonzalo!
Gracias por el aporte.
JC’s
Comentario por Juan Carlos González Martín — septiembre 15, 2008 @ 18:57 |
Muy interesante tu articulo. Tengo un reporte que tiene un parametro multivalor ademas esta parametro esta enlazado a un dataset el parametro. Al ejecutar el reporte muestra toda la informacion del dataset(informacion de una columna de una tabla) pero solo me selecciona el primer valor.
en mi procedimiento almacenado he usado In(@valor) y en el reporting he usado Join(Parameter!valor.value,”,”)
Pero ocurre lo mismo.
Gracias de antemano
Comentario por Jose Luis — octubre 3, 2008 @ 16:56 |
Disculpa José Luis,
¿Puedes explicar un poco mejor como construyes la query y añades el parámetro?
Un saludo
JC’s
Comentario por Juan Carlos González Martín — octubre 11, 2008 @ 07:02 |
ayuda porfavor:
nesecito listar todos los registros de mi consulta mas de dos, cuando cargo en una tabla en mi reporting solo muestra el primero, alguienque me pueda ayudar por favor
Comentario por master — noviembre 13, 2008 @ 00:21 |
Hola…mira, estoy trabajando con Reporting Services dentro de Visual Studio 2008, primero hice un ejemplo en el que el usuario escribia el código de un pais y en el reporte le mostraba todos los departamentos de ese país. Ahora lo que quiero es que no me muestre solamente ese país sino todos los países y en los detalles me agregue cada uno de los departamentos que tiene ese país. Lo que sucede es que me sale un solo pais en y se me enlistan todos los departamentes que hay en la BD. Podrías ser tan amable de decirme si hay alguna manera en que pueda hacer lo que quiero. O enviarme algún ejemplo a daniel_baby_jirafa@hotmail.com
Realmente agradecería mucho una respuesta
Comentario por Danny Arrubl — marzo 26, 2009 @ 20:14 |
[...] SQL Server Reporting Services: Preguntas y Respuestas (II)! abril, 2008 6 comentários 5 [...]
Pingback por Los números de 2010 « Pasión por la tecnología… — enero 2, 2011 @ 09:51 |