Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   existe un impedimento para hacer subconsultas de interbase en delphi? (https://www.clubdelphi.com/foros/showthread.php?t=14141)

edy_aca 10-09-2004 16:45:52

existe un impedimento para hacer subconsultas de interbase en delphi?
 
existe un impedimento para hacer subconsultas de interbase en delphi?
veran puse este query:


SELECT * FROM SUMEMB where docto
in
(

SELECT DISTINCT docto FROM SUMEMB
INNER JOIN DETTRA ON (SUMEMB.DOCTO = DETTRA.NUMTRA) AND (SUMEMB.TDAORI = DETTRA.TDAORI) AND (SUMEMB.TDADES = DETTRA.TIENDA)
WHERE
((SUMEMB.FECHA >= '08/01/2004') AND
(SUMEMB.FECHA <= '08/31/2004') AND
(SERDOC = 'P')) AND
((EDOEMB = '') OR
(EDOEMB = 'E'))
)

** como veran quiero todos los registros de sumemb segun la subconsulta y que no se repitan
gracias x su ayuda

guillotmarc 10-09-2004 21:12:44

Hola.

No, no existe ningún impedimento para lanzar consultas con subconsultas a Interbase en Delphi.

El error tiene que estar en la misma consulta, por lo que intenta lanzarla desde una herramienta de administración de Interbase (IB-Expert, IBConsole, EMS QuickDesk, ...)

Además si nos indicas el error que te devuelve, quizá te podamos ayudar.

Saludos.

jachguate 10-09-2004 22:00:34

Hola Edy.

Al respecto de la duplicidad de este hilo, en el foro de Interbase y en el de SQL, te recomiendo la lectura de la guia de estilo de los foros, donde están las reglas básicas de convivencia en este lugar.

Y por supuesto... su cumplimiento.

Hasta luego.

;)

edy_aca 11-09-2004 17:13:45

el dialecto de sql que usa mi interbase es el 3
 
guillotmarc
El error tiene que estar en la misma consulta, por lo que intenta lanzarla desde una herramienta de administración de Interbase (IB-Expert, IBConsole, EMS QuickDesk, ...)



es que no me marca ningun error, solo el programa deja de responder.

ya construi la consulta en el BConsole y en el EMS Interbase & firebird Manager ni no me marca ningun error.

esta es la consulta:

SELECT * FROM SUMEMB where docto
in
(
SELECT DISTINCT docto FROM SUMEMB
INNER JOIN DETTRA ON (SUMEMB.DOCTO = DETTRA.NUMTRA) AND (SUMEMB.TDAORI = DETTRA.TDAORI) AND (SUMEMB.TDADES = DETTRA.TIENDA)
WHERE
((SUMEMB.FECHA >= '08/01/2004') AND
(SUMEMB.FECHA <= '08/31/2004') AND
(SERDOC = 'P')) AND
((EDOEMB = '') OR
(EDOEMB = 'E'))
)


solo se bloquea el programa donde la haga. no marca error.
gracias por su ayuda

edy_aca 11-09-2004 19:08:32

Ayuda Porfavor
 
Ayuda Porfavor

abel 12-09-2004 00:43:46

Hola:

Prueba a "sacar" el select interior y quitando los condicionantes. Si funciona, ve añadiendo uno a uno y probando cada uno de los condicionantes.

Saludos.

guillotmarc 13-09-2004 14:34:30

Hola.

Si la consulta funciona bien en el EMS, no tiene porqué fallar en Delphi. Seguramente será un problema de los componentes de acceso. ¿ cuales usas ?.

Respecto a la consulta, obtendrás exactamente el mismo resultado si quitas el DISTINCT de la subconsulta, y facilitas que el motor busque la mejor optimización de la consulta.

Tampoco es necesaria la utilización de una subconsulta, esta consulta debe darte el mismo resultado :

Código SQL [-]
SELECT DISTINCT SUMEMB.* 
FROM SUMEMB
        INNER JOIN DETTRA ON (SUMEMB.DOCTO = DETTRA.NUMTRA) AND 
                                        (SUMEMB.TDAORI = DETTRA.TDAORI) AND 
                                        (SUMEMB.TDADES = DETTRA.TIENDA)
WHERE ((SUMEMB.FECHA >= '08/01/2004') AND
           (SUMEMB.FECHA <= '08/31/2004') AND
           (SERDOC = 'P')) AND
          ((EDOEMB = '') OR
           (EDOEMB = 'E')))

Finalmente si utilizas Interbase 6, te recomiendo que pases a Interbase 7 o Firebird (este último es gratuito).


La franja horaria es GMT +2. Ahora son las 11:40:16.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi