Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-09-2004
edy_aca edy_aca is offline
Miembro
 
Registrado: nov 2003
Posts: 74
Poder: 21
edy_aca Va por buen camino
Smile 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
Responder Con Cita
  #2  
Antiguo 10-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 10-09-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 11-09-2004
edy_aca edy_aca is offline
Miembro
 
Registrado: nov 2003
Posts: 74
Poder: 21
edy_aca Va por buen camino
Smile 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
Responder Con Cita
  #5  
Antiguo 11-09-2004
edy_aca edy_aca is offline
Miembro
 
Registrado: nov 2003
Posts: 74
Poder: 21
edy_aca Va por buen camino
Unhappy Ayuda Porfavor

Ayuda Porfavor
Responder Con Cita
  #6  
Antiguo 12-09-2004
Avatar de abel
abel abel is offline
Miembro
 
Registrado: sep 2003
Posts: 59
Poder: 21
abel Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 13-09-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:21:27.


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
Copyright 1996-2007 Club Delphi