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?

Preguntas similare

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?

Respuesta Responder a este mensaje
#2 Alejandro Mesa
21/11/2008 - 19:32 | Informe spam
Correccion:


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


AMB


"Alejandro Mesa" wrote:

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?
>
Respuesta Responder a este mensaje
#3 egsdar
21/11/2008 - 22:28 | Informe spam
Sabes donde encuentro ejemplos con stored procedure para lo que intento hacer?


"Alejandro Mesa" wrote:

Correccion:


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


AMB


"Alejandro Mesa" wrote:

> 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?
> >
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida