Parametros de una consulta en reporting services

21/11/2008 - 12:27 por egsdar | Informe spam
Hola, tengo en un reporte 2 datasets, el primero es el principal y se llama
SIPDS, el cual contiene el siguiente query:



SELECT Propuesta.FechaRecibo, Usuario.Nombre AS Vendedor,
ResponsablePropuesta.FechaPlanEntrega, Usuario_1.Nombre AS RespProp,
Estado.Descripcion, Prospecto.Nombre AS Prospecto,
Propuesta.IdPropuesta, Propuesta.FechaCierre
FROM Propuesta FULL OUTER JOIN
Usuario ON Propuesta.IdUsuario = Usuario.IdUsuario
FULL OUTER JOIN
ResponsablePropuesta ON Propuesta.IdPropuesta =
ResponsablePropuesta.Idpropuesta FULL OUTER JOIN
Estado ON Propuesta.IdEstado = Estado.IdEstado FULL
OUTER JOIN
Usuario AS Usuario_1 ON
ResponsablePropuesta.RespPropuesta = Usuario_1.IdUsuario FULL OUTER JOIN
Prospecto ON Propuesta.IdProspecto =
Prospecto.IdProspecto
WHERE (Estado.IdEstado = 1) AND (Propuesta.FechaRecibo BETWEEN
@FechaInicio AND @FechaFinal) AND (Usuario_1.IdUsuario = @Responsable)
ORDER BY RespProp, ResponsablePropuesta.FechaPlanEntrega





Como se pueden dar cuenta maneja tres parametros uno de los cuales para
comodidad del usuario coloque el segundo dataset para el responsable y que
pudiera elegirlo de la lista:



SELECT IdUsuario, Nombre
FROM Usuario
ORDER BY Nombre



La pregunta que me asalta es si existe alguna manera que el parametro
responsable no sea requerido y me muestre sin embargo los resultados con
respecto a la fecha?
 

Leer las respuestas

#1 Alejandro Mesa
21/11/2008 - 18:43 | Informe spam
egsdar,

Que tipo de data tiene la columna [Usuario_1].[IdUsuario]?

Si es entero, no acepta null, puedes usar lo sgte.

1 - En el reporte, marca el parametro para que acepte NULL por defecto.
2 - Cambia la sentencia "select" a:


...
AND Usuario_1.IdUsuario >= coalesce(@Responsable, 0)
AND <= coalesce(@Responsable, 2147483647)
...

Si los ids pueden ser negativos, entonces usa el minimo entero posible en el
primer uso de "coalesce", para que cuando el parametro sea null, entonces se
seleccione todo el rango de valores enteros permitidos en sql server.

Otra cosa que puedes hacer es usar un procedimiento almacenado que haga uso
de sql dinamico para armar la sentencia.

The Curse and Blessings of Dynamic SQL
http://www.sommarskog.se/dynamic_sql.html

Dynamic Search Conditions in T-SQL
http://www.sommarskog.se/dyn-search.html


AMB


"egsdar" wrote:

Hola, tengo en un reporte 2 datasets, el primero es el principal y se llama
SIPDS, el cual contiene el siguiente query:



SELECT Propuesta.FechaRecibo, Usuario.Nombre AS Vendedor,
ResponsablePropuesta.FechaPlanEntrega, Usuario_1.Nombre AS RespProp,
Estado.Descripcion, Prospecto.Nombre AS Prospecto,
Propuesta.IdPropuesta, Propuesta.FechaCierre
FROM Propuesta FULL OUTER JOIN
Usuario ON Propuesta.IdUsuario = Usuario.IdUsuario
FULL OUTER JOIN
ResponsablePropuesta ON Propuesta.IdPropuesta =
ResponsablePropuesta.Idpropuesta FULL OUTER JOIN
Estado ON Propuesta.IdEstado = Estado.IdEstado FULL
OUTER JOIN
Usuario AS Usuario_1 ON
ResponsablePropuesta.RespPropuesta = Usuario_1.IdUsuario FULL OUTER JOIN
Prospecto ON Propuesta.IdProspecto =
Prospecto.IdProspecto
WHERE (Estado.IdEstado = 1) AND (Propuesta.FechaRecibo BETWEEN
@FechaInicio AND @FechaFinal) AND (Usuario_1.IdUsuario = @Responsable)
ORDER BY RespProp, ResponsablePropuesta.FechaPlanEntrega





Como se pueden dar cuenta maneja tres parametros uno de los cuales para
comodidad del usuario coloque el segundo dataset para el responsable y que
pudiera elegirlo de la lista:



SELECT IdUsuario, Nombre
FROM Usuario
ORDER BY Nombre



La pregunta que me asalta es si existe alguna manera que el parametro
responsable no sea requerido y me muestre sin embargo los resultados con
respecto a la fecha?

Preguntas similares