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 19-10-2007
aikai aikai is offline
Registrado
 
Registrado: oct 2007
Posts: 7
Poder: 0
aikai Va por buen camino
Delphi no interpreta query

Holas,

no sé si estoy haciendo mal uso del foro, si es así, mis disculpas; pero vi mi otro hilo con una marca como si estuviera resuelto y, en realidad, la cuestión por la que lo abrí se solucionó con vuestra ayuda. Pero me surgió la siguiente... No consigo que la aplicación en delphi me ejecute la sentencia que os muestro (me da error ODBC... Pocos parámetros... Se esperaba 1).

He probado a cambiar paréntesis, '', etc. Toy desesperada ya La consulta funciona perfectamente desde el access y seguro que en delphi no lo hace por algun detalle de sintaxis q se me escapa. Gracias!

Código SQL [-]
SELECT Sum(IIf(IsNull(g.exrate),gp.total_inv,(gp.total_inv)/g.exrate)) AS INVERSION, 
Sum(IIf(IsNull(g.exrate),gp.total_ganado-gp.total_inv,(gp.total_ganado-gp.total_inv)/g.exrate)) 
AS BENEFICIO, (BENEFICIO/INVERSION)*100 AS MARGEN, Format(g.date'yyyy') & ", " & Format(g.date,'mm') AS meses
FROM tabla1 AS g INNER JOIN tabla2 AS gp ON g.id = gp.id
WHERE gp.id = (select prefer_valor from prefs where pref_key = 'PRIN')
GROUP BY Format(g.date,'yyyy') & ", " & Format(g.date,'mm')
ORDER BY Min(g.date);

Última edición por dec fecha: 19-10-2007 a las 13:17:12.
Responder Con Cita
  #2  
Antiguo 19-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Es probable que se trate de un error de sintáxis, y, siendo así, no basta conque pongas la consulta SQL que tratas de llevar a cabo, sino el código fuente de Delphi donde tratas de "embeberla". Así, sin más, la consulta que muestras no puede guardarse en una cadena en Delphi, puesto que contiene caracteres que "partirían" dicha cadena y la harían inválida.

Así que si te es posible muestra cómo tratas de hacer la consulta en Delphi, y el mensaje de error exacto que obtienes.

PD. Fíjate que en este foro existen las etiquetas [sql][/sql], [delphi][/delphi], entre otras, que mostrarán el código fuente correspondiente de manera que se lea mejor.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 19-10-2007
aikai aikai is offline
Registrado
 
Registrado: oct 2007
Posts: 7
Poder: 0
aikai Va por buen camino
Gracias por las recomendaciones

El código sql lo tengo puesto directamente en el ADOQuery1.SQL;

Tengo los componentes ADOConnection, ADOQuery, DBGrid y Datasource debidamente relacionados, en principio.

Y en el form un botón con

Código Delphi [-]
ADOQuery1.Open;

Qué estoy haciendo mal?
Responder Con Cita
  #4  
Antiguo 19-10-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Intentando hacer de adivino:
Código SQL [-]
WHERE gp.id = (select prefer_valor from prefs where pref_key = 'PRIN')

¿exiten varios registros que su pref_key sea igual a 'PRIN'?
Si es así, estas usando un operador de igualdad que espera un solo registro, de ahí el fallo. Prueba usando:
Código SQL [-]
WHERE gp.id in  (select prefer_valor from prefs where pref_key = 'PRIN')

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 19-10-2007
aikai aikai is offline
Registrado
 
Registrado: oct 2007
Posts: 7
Poder: 0
aikai Va por buen camino
Gracias Lepe, pero no hay duplicidad. Y además, la query va bien en access. Lo he probado aun así y nada.
Responder Con Cita
  #6  
Antiguo 19-10-2007
The_Avatar The_Avatar is offline
Miembro
 
Registrado: ene 2006
Posts: 43
Poder: 0
The_Avatar Va por buen camino
Falta una coma en el primer Format...
Responder Con Cita
  #7  
Antiguo 19-10-2007
aikai aikai is offline
Registrado
 
Registrado: oct 2007
Posts: 7
Poder: 0
aikai Va por buen camino
Thanks. Que va... He quitado toda referencia a fechas, los format, el group by y el order y nada. Además, ya os digo, que tal como la pongo en el post corre perfecta en access.

Lo he copiado y pegado en la propiedad ADOQuery1.SQL tal cual... no será que habrá que ponerlo en líneas diferentes o con otro formato... No sé, lo mismo estoy diciendo tonterías...

Última edición por aikai fecha: 19-10-2007 a las 14:33:19.
Responder Con Cita
  #8  
Antiguo 19-10-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Lo que pasa es que IIF es una función de Access... en MySQL el equivalente es IF() asi sin la otra "I".

Ojo con Access porque su SQL no es precisamente muy apegado al estandar que digamos (que raro verdad?). Si estas solo copiando querys de access a MySQL te vas a encontrar muchos problemas iguales...Es mejor que revises los querys antes de correrlos en mysql buscando las funciones que utilices en el manual de sql para ver si existen y si no buscar su equivalente.

Aqui tienes un link a
una buena pagina con ejemplos y demas:
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #9  
Antiguo 19-10-2007
Avatar de fredo
fredo fredo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Chile, Valparaiso
Posts: 318
Poder: 21
fredo Va por buen camino
Tal ves sea idiota lo que te dire pero... probaste quitando la propiedad param check? o sea paramcheck = false;
__________________
^_^

http://stna.cl

Última edición por fredo fecha: 19-10-2007 a las 20:05:14.
Responder Con Cita
  #10  
Antiguo 20-10-2007
hach hach is offline
Miembro
 
Registrado: mar 2007
Ubicación: Bariloche, Argentina
Posts: 44
Poder: 0
hach Va por buen camino
como dijo the_avatar...

si lo copiaste y pegaste tal cual, en Format(g.date'yyyy') te falta la coma...
Responder Con Cita
  #11  
Antiguo 20-10-2007
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Me encantan los posts como este en donde el autor no se digna en decirnos: "no me funcionó", "si me funcionó", "no le entiendo"...etc. y todos seguimos dando mas y mas soluciones pensando que ninguna de las anteriores le ha funcionado...
__________________
AKA "El animalito" ||Cordobés a mucha honra||
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
Delphi For PHP: Acceder a query desde JavaScript? maro PHP 4 01-10-2007 12:35:05
Parámetros en los Query en Delphi for PHP mlara PHP 3 13-07-2007 06:56:36
Usando Query en delphi 7 quja SQL 2 16-10-2005 07:05:37
Resultado de un query en Delphi MRang14 SQL 3 18-11-2004 00:49:57
Como ejecutar un query de Access en Delphi tayra SQL 10 14-09-2004 09:34:21


La franja horaria es GMT +2. Ahora son las 06:03:43.


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