![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
![]() 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 |
#2
|
||||
|
||||
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). |
#3
|
||||
|
||||
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 |
#4
|
|||
|
|||
![]() 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 |
#5
|
|||
|
|||
![]() Ayuda Porfavor
|
#6
|
||||
|
||||
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. |
#7
|
||||
|
||||
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 :
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). |
![]() |
|
|
![]() |
|