Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-08-2007
xterm xterm is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
xterm Va por buen camino
error en consulta sql

Bueno, primero que nada presentarme, soy un NOVATO en delphi (y en cierto modo en programación, pues hace mucho que no la toco, y vengo de Gambas (V.Basic). así como hace muchos años de nuestro amigo pascal y delphi3). y una vez presentado, ahí va mi consulta.

Estoy tratando de realizar una consulta acotada (un poco larga) con lazarus (el delphi para linux, por decir algo).
El tema es que llevo una semana entera leyendo foros y buscando información en san.google, y nada, no ecuentro el error por ningún lado.
La consulta es esta:
Código Delphi [-]
     dbinfocaja.SQL.Add('select CA0,CA22,SUM(CA10) AS UNIALB,SUM(CA12) AS UNITAR,');
     dbinfocaja.SQL.Add('SUM(CA13) AS IMPTAR,');
     dbinfocaja.SQL.Add('SUM(CA4)+SUM(CA6)-SUM(CA11)-SUM(CA13)+SUM(CA15)+SUM(CA16)-SUM(CA17)-SUM(CA18)-SUM(CA19)+SUM(CA20)+SUM(CA21)-SUM(CA23) AS TOTAL,');
     dbinfocaja.SQL.Add('SUM(CA4)+SUM(CA6)+SUM(CA15)+SUM(CA16)-SUM(CA17)-SUM(CA18)-SUM(CA19)+SUM(CA20)+SUM(CA21)-SUM(CA23) AS TTOTAL,');
     dbinfocaja.SQL.Add('SUM(CA15) AS SALDOINI,SUM(CA19) AS DEUDAS,SUM(CA21) AS ENTREGAS');
     dbinfocaja.SQL.Add(' from cajas0000');
     dbinfocaja.SQL.Add(' where  CA0 between '+QuotedStr(Edit19.Text));
     dbinfocaja.SQL.Add(' and '+QuotedStr(Edit20.Text));
     dbinfocaja.SQL.Add(' and CA22='+QuotedStr(ComboBox1.Text));
     dbinfocaja.SQL.Add(' GROUP BY CA0');
     dbinfocaja.ExecSQL;
He probado a poner el group antes que el where, en cuyo caso me lanza otro error, ahora postearé ambos. El uso de between para las fechas, lo saqué de este mismo foro, y el uso de quotedstr igual, por lo que descarto que el error fuese debido a las comillas o dobles comillas.
El error que aparece en este caso es:

dbConect : Error executing query: You have an error in your SQL syntax; check de manual that corresponds to your MySQL server versión for the right syntax to use near 'GROUP BY CA0)' at line 10.

Si cambio el orden poniendo Group by antes que where, el error es este:

dbConect : Error executing query: You have an error in your SQL syntax; check de manual that corresponds to your MySQL server versión for the right syntax to use near 'where ( CA0 between '2007-08-29' and '2007-08-29' and CA22='A')' at line 8.

un saludo y gracias por vuestra ayuda.

Pd.- También he probado a poner having CA22 .... y nada, el mismo error.

Última edición por xterm fecha: 04-09-2007 a las 00:28:25.
Responder Con Cita
  #2  
Antiguo 29-08-2007
Avatar de aom
aom aom is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 106
Poder: 22
aom Va por buen camino
Hola,
antes que nada... bienvenido al foro de Club Delphi. Te recomiendo leer la guía de estilo.

El error en la consulta parece que es por el Group By. Tienes que agrupar por todos los campos que no son sumatorios:

GROUP BY CA0,CA22

Espero que te sirva,
aom
__________________
Más se perdió en la guerra... y volvieron cantando
Responder Con Cita
  #3  
Antiguo 29-08-2007
xterm xterm is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
xterm Va por buen camino
Muchas gracias por tu respuesta, en cuanto a agrupar los no sumatorios, es lo mismo, pues el CA22 como podrás comprobar por la última clausula del where, es exclusorio, es decir, solo existirá un tipo de CA22, el resto, los agrupará por CA0.

De todos modos gracias, en cuanto a la primera parte, ¿La guia del estilo?, que es exactamente. El problema con el que me he encontrado al programar con Lazarus, es la falta de información sobre el mismo y sus componentes que hay, exactamente para lo que estoy trabajando, al parecer no es exactamente igual que en freepascal, sino más bien como delphi, motivo por el cual, no dispongo de manuales ni nada parecido.

No obstante, voy a buscar por google a ver que es.

De nuevo gracias y un saludo.
Responder Con Cita
  #4  
Antiguo 29-08-2007
Avatar de aom
aom aom is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 106
Poder: 22
aom Va por buen camino
Hola,
la guía de estilo es la guía de estilo del foro del Club Delphi. Disculpa porqué no me he explicado muy bien... tenia algo de prisa al responder.

En cuanto a la consulta, aunque tú excluyas en el where, la sintaxis del group by te obliga a agrupar por CA0,CA22 para que funcione, porqué los estás seleccionando en la cláusula SELECT. Lo has probado?

Saludos
__________________
Más se perdió en la guerra... y volvieron cantando
Responder Con Cita
  #5  
Antiguo 29-08-2007
xterm xterm is offline
Registrado
 
Registrado: ago 2007
Posts: 7
Poder: 0
xterm Va por buen camino
Aún indicándote que no hacia falta (pues la consulta en sql funciona perfectamente en mysql-browser, por ejemplo), siempre pruebo todo lo que me recomiendan, jejeje, por si las moscas, nunca se sabe. Pero desgraciadamente, el resultado ha sido el mismo.

En cuanto a la guía de estilos, voy a ver que tal.


gracias por todo y un saludo.
Responder Con Cita
  #6  
Antiguo 29-08-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
REvisa además el formato de las fechas que usas de filtro. Prueba com " en lugar de ' o #.
Probablemente el SQL browser hace la conversión automáticamente o entiende la sintaxis.

No puedo probar porque no tengo MySQL, pero podría ser el problema.

Saludos y suerte
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error en consulta jlsc Conexión con bases de datos 5 16-06-2007 09:27:39
Error en consulta SQL Loviedo SQL 8 09-03-2007 23:06:03
Error en consulta jmlifi SQL 1 21-04-2005 16:07:19
Error en consulta RR76 SQL 3 07-02-2005 13:29:10
Error en consulta inetplus Varios 2 10-04-2004 21:09:23


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


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