Pasión por la tecnología…

abril 14, 2008

SQL Server Reporting Services: Preguntas y Respuestas (II)!

Archivado en: Business Intelligence,SQL Server Reporting Services — Juan Carlos González Martín @ 21:55

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.

image

    • En la configuración del parámetro, simplemente marcamos el check Multivalue.

image

    • De esta forma, al ejecutar el informe se ofrecerá la opción All Values:

image

    • Y el resultado de aplicar el filtro (Select All) sería:

image

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.

       

About these ads

7 comentarios »

  1. 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 | Responder

  2. Hola Gonzalo!
    Gracias por el aporte.

    JC’s

    Comentario por Juan Carlos González Martín — septiembre 15, 2008 @ 18:57 | Responder

  3. 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 | Responder

  4. 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 | Responder

  5. 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 | Responder

  6. 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 | Responder

  7. [...] 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 | Responder


RSS feed para los comentarios de esta entrada. TrackBack URI

Deja un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

El tema Rubric. Blog de WordPress.com.

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.

Únete a otros 40 seguidores

%d personas les gusta esto: