locked
Parametros 0 a varios RRS feed

  • Pregunta

  • Hola:

    Hoy tengo una pregunta que creo que es sencilla, pero no acabo de dar con ello.

    Digamos que tengo que mostrar un informe a traves de una consulta que depende de un parametro el cual puede significar uno, o todos los registros de la BD. La idea es que si no se elige parametro, significa que se quieren todos los registros de la bd.

    Por ejemplo, si la consulta fuese: SELECT nombre from Empleados where idEmpleado IN (@idEmpleados), querria que si @idEmpleados estuviese vacia, hiciese la consulta sin tener en cuenta el where, o lo que es lo mismo, hiciese: SELECT nombre from Empleados.

    ¿Hay alguna manera de conseguir este efecto?

    Salu2.
    lunes, 27 de julio de 2009 6:49

Respuestas

  • Hola, resolvi el problema metiendo la condición en la consulta.

    SELECT nombre
    FROM Empleados
    WHERE
    idEmpleado =(
                CASE WHEN @idEmpleado IS NULL OR @idEmpleado = ''
                    THEN idEmpleado
                    ELSE @idEmpleado
                END
            )

    Cuando el parametro es nulo o vacío, comparamos con el idEmpleado, que siempre será true, y por tanto obtiene todos. Si no es null ni vacío, entonces compara con el parametro que recibe.

    Utilizo Reporting Services.

    Un saludo.
    • Marcado como respuesta a7o martes, 11 de agosto de 2009 7:43
    martes, 11 de agosto de 2009 7:43

Todas las respuestas

  • Hola,

    Si puedes pasar los parámetros desde código en una aplicación (VB.Net o C#) podrías controlar tú mismo cuando puede o no puede meter el where y meter el where por código al parámetro.

    ¿Utilizas Crystal Reports o Reporting Services?

    Un Saludo


    Fran Díaz | {geeks.ms/blogs/fdiaz/} | {onobanet.com} | {secondnug.com}
    miércoles, 29 de julio de 2009 6:15
    Moderador
  • Hola, resolvi el problema metiendo la condición en la consulta.

    SELECT nombre
    FROM Empleados
    WHERE
    idEmpleado =(
                CASE WHEN @idEmpleado IS NULL OR @idEmpleado = ''
                    THEN idEmpleado
                    ELSE @idEmpleado
                END
            )

    Cuando el parametro es nulo o vacío, comparamos con el idEmpleado, que siempre será true, y por tanto obtiene todos. Si no es null ni vacío, entonces compara con el parametro que recibe.

    Utilizo Reporting Services.

    Un saludo.
    • Marcado como respuesta a7o martes, 11 de agosto de 2009 7:43
    martes, 11 de agosto de 2009 7:43