Problema SQL y Datagrid

05/01/2005 - 16:39 por ManelBIS | Informe spam
Hola,

Tenemos una sentencia SQL que mostramos en un datagrid, todo funciona
correctamente pero si al SQL le añadimos la
clausula HAVING, el datagrid nos muestra tantas rows como registros devuelve
el select pero los campos estan a null.

La sentencia que usamos es:
SELECT a.ORDENTRABAJO,a.DESORDENTRABAJO,Count(a.EQUIPO) AS TotalEquipos FROM
WK_OTSAP_PUENTE a
WHERE a.REALIZADA='1'
GROUP BY a.ORDENTRABAJO,a.DESORDENTRABAJO
HAVING (Count(a.EQUIPO))=(SELECT Count(*) AS total FROM WK_OTSAP_PUENTE
WHERE ordentrabajo=a.ordentrabajo)

Si ejecutamos la sentencia SQL directamente en la base de datos el resultado
es correcto, y si quitamos el HAVING
los campos se muestran en el datagrid con sus valores, pero logicamente
muestra mas registros que los que necesitamos


¿Sabe alguien si hay algún bug con la clausula HAVING?

Muchas gracias por vuestra ayuda

Preguntas similare

Leer las respuestas

#1 Erich Bühler
05/01/2005 - 23:03 | Informe spam
Parece ser un problema entre el driver de la base de datos y la aplicación.
¿Si creas una vista con la consulta y obtienes el resultado de esta, pasa lo
mismo?

Un saludo!!!
Erich Bühler (MVP)
www.vblibros.com

"ManelBIS" wrote in message
news:
Hola,

Tenemos una sentencia SQL que mostramos en un datagrid, todo funciona
correctamente pero si al SQL le añadimos la
clausula HAVING, el datagrid nos muestra tantas rows como registros


devuelve
el select pero los campos estan a null.

La sentencia que usamos es:
SELECT a.ORDENTRABAJO,a.DESORDENTRABAJO,Count(a.EQUIPO) AS TotalEquipos


FROM
WK_OTSAP_PUENTE a
WHERE a.REALIZADA='1'
GROUP BY a.ORDENTRABAJO,a.DESORDENTRABAJO
HAVING (Count(a.EQUIPO))=(SELECT Count(*) AS total FROM WK_OTSAP_PUENTE
WHERE ordentrabajo=a.ordentrabajo)

Si ejecutamos la sentencia SQL directamente en la base de datos el


resultado
es correcto, y si quitamos el HAVING
los campos se muestran en el datagrid con sus valores, pero logicamente
muestra mas registros que los que necesitamos


¿Sabe alguien si hay algún bug con la clausula HAVING?

Muchas gracias por vuestra ayuda
Respuesta Responder a este mensaje
#2 AZB
06/01/2005 - 00:06 | Informe spam
No se que es lo que estas buscando con esa consulta, tal vez si me explicas
que es lo que quieres obtener te podamos ayudar.-

Salu2


AZB

"ManelBIS" escribió en el mensaje
news:
Hola,

Tenemos una sentencia SQL que mostramos en un datagrid, todo funciona
correctamente pero si al SQL le añadimos la
clausula HAVING, el datagrid nos muestra tantas rows como registros


devuelve
el select pero los campos estan a null.

La sentencia que usamos es:
SELECT a.ORDENTRABAJO,a.DESORDENTRABAJO,Count(a.EQUIPO) AS TotalEquipos


FROM
WK_OTSAP_PUENTE a
WHERE a.REALIZADA='1'
GROUP BY a.ORDENTRABAJO,a.DESORDENTRABAJO
HAVING (Count(a.EQUIPO))=(SELECT Count(*) AS total FROM WK_OTSAP_PUENTE
WHERE ordentrabajo=a.ordentrabajo)

Si ejecutamos la sentencia SQL directamente en la base de datos el


resultado
es correcto, y si quitamos el HAVING
los campos se muestran en el datagrid con sus valores, pero logicamente
muestra mas registros que los que necesitamos


¿Sabe alguien si hay algún bug con la clausula HAVING?

Muchas gracias por vuestra ayuda
Respuesta Responder a este mensaje
#3 ManelBIS
07/01/2005 - 09:57 | Informe spam
El resultado que busco funciona correctamente y lo muestra cuando lo ejecuto
directamente en la BD. Y en el DATAGRID tambien siempre que excluya el HAVING
de la consulta. Pero necesito esa condicion a mostrar!.

Creo que tienes razon que la solucion podria estar con lo del driver. Pero
no se...

Gracias
"Erich Bühler" escribió:

Parece ser un problema entre el driver de la base de datos y la aplicación.
¿Si creas una vista con la consulta y obtienes el resultado de esta, pasa lo
mismo?

Un saludo!!!
Erich Bühler (MVP)
www.vblibros.com

Respuesta Responder a este mensaje
#4 ManelBIS
07/01/2005 - 10:07 | Informe spam
Lo intentare pero es un poco compilcado...

La tabla:

OT EQ1 R1
OT EQ2 R0
OT EQ3 R0
OT2 EQ1 R1
OT2 EQ2 R1
OT2 EQ3 R1

Donde OT = orden de trabajo : EQ = equipo : R1 = realizada --> '1' : R0 =
no realizada --> = '0'

Pues lo que quiero es mostrar las OT q estan realizadas --> que para
'TODOS' sus equipos sea --> R1.

LA consulta me funciona pero me da q el DATAGRID no le gusta el HAVING

Gracias

"AZB" escribió:

No se que es lo que estas buscando con esa consulta, tal vez si me explicas
que es lo que quieres obtener te podamos ayudar.-

Salu2


AZB


> SELECT a.ORDENTRABAJO,a.DESORDENTRABAJO,Count(a.EQUIPO) AS TotalEquipos
FROM
> WK_OTSAP_PUENTE a
> WHERE a.REALIZADA='1'
> GROUP BY a.ORDENTRABAJO,a.DESORDENTRABAJO
> HAVING (Count(a.EQUIPO))=(SELECT Count(*) AS total FROM WK_OTSAP_PUENTE
> WHERE ordentrabajo=a.ordentrabajo)
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida