Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-09-2012
hoyosfelix hoyosfelix is offline
Miembro
 
Registrado: ago 2010
Ubicación: San Antonio, Paraguay
Posts: 38
Poder: 0
hoyosfelix Va por buen camino
Respuesta "Ayuda con consulta"

Hola,
Para verificar que la consulta traiga algún resultado se debe probar primero en una herramienta de SQL, por ejemplo el FlameRobin.
Allí en vez de :fecha1 y :fecha2 podés cambiar por un rango que tengas en tu tabla consumo, ejemplo:

Código SQL [-]
SELECT C.IDCARRO, C.NOCARRO, C.INDICECONS, SUM(DHR.KMRECORRIDO), SUM(CO.CONSUMO) 
FROM CARRO C 
INNER JOIN HOJARUTA HR ON HR.IDCARRO = C.IDCARRO   
INNER JOIN DESCHOJARUTA DHR ON DHR.IDHOJARUTA = HR.IDHOJARUTA   
INNER JOIN CONSUMO CO ON CO.IDCARRO = C.IDCARRO 
WHERE CO.FECHA BETWEEN '2012-09-01' AND '2012-09-30' 
GROUP BY C.IDCARRO, C.NOCARRO, C.INDICECONS 
ORDER BY C.IDCARRO

Si devuelve un resultado significa que la consulta está correcta y luego ya se puede pasar al SQL de tu componente Query en Delphi.
Es cierto lo que dice Casimiro Notevi, sería interesante saber en dónde estás corriendo la consulta, si en Delphi, en FlameRobin u otro; si tuvieramos más datos podríamos ir directo al problema.

Saludos.

Última edición por Casimiro Noteví fecha: 13-09-2012 a las 22:28:21.
Responder Con Cita
  #2  
Antiguo 13-09-2012
Salnhack Salnhack is offline
Miembro
NULL
 
Registrado: oct 2011
Ubicación: Cuba
Posts: 71
Poder: 15
Salnhack Va por buen camino
La consulta la estoy corriendo en deplhi y el error que me muestra es el que adjunto
Imágenes Adjuntas
Tipo de Archivo: jpg ERROR SQL.JPG (34,3 KB, 13 visitas)
Responder Con Cita
  #3  
Antiguo 13-09-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Parece que no has tecleado bien la consulta, ¿puede ser?, pon el código que lo veamos.
Seguimos sin ser adivinos
Responder Con Cita
  #4  
Antiguo 13-09-2012
Salnhack Salnhack is offline
Miembro
NULL
 
Registrado: oct 2011
Ubicación: Cuba
Posts: 71
Poder: 15
Salnhack Va por buen camino
este es el codigo completo que le paso al query

Código Delphi [-]
   with datamodule29.Query2 do
    Begin
     Close;
     SQl.Clear;
     SQL.Add('Select idmes from mes where mes=mes');
     ParamByName('pmes').AsString:=suiDBLookupComboBox2.Text;
     Open;
     mes:=FieldByName('idmes').AsInteger;
     Close;
     SQl.Clear;
     SQL.Add('Select * from mes where idmes=idmes');
     ParamByName('pidmes').AsInteger:=mes;
     Open;
     inicio:=FieldByName('inicio').AsString;
     fin:=FieldByName('fin').AsString;
     Close;
     SQL.Clear;
     SQL.Add('SELECT C.IDCARRO, C.NOCARRO, C.INDICECONS, SUM(DHR.KMRECORRIDO), SUM(CO.CONSUMO)');
     SQL.Add('FROM CARRO C INNER JOIN HOJARUTA HR ON HR.IDCARRO = C.IDCARRO');
     SQL.Add('INNER JOIN DESCHOJARUTA DHR ON DHR.IDHOJARUTA = HR.IDHOJARUTA');
     SQl.Add('INNER JOIN CONSUMO CO ON CO.IDCARRO = C.IDCARRO');
     SQL.Add('WHERE CO.FECHA BETWEEN :FECHA1 AND :FECHA2');
     SQL.Add('GROUP BY C.IDCARRO, C.NOCARRO, C.INDICECONS');
     SQL.Add('ORDER BY C.IDCARRO');
     ParamByName('FECHA1').AsString:=inicio;
     ParamByName('FECHA2').AsString:=fin;
     Open;
    end;
Responder Con Cita
  #5  
Antiguo 13-09-2012
hoyosfelix hoyosfelix is offline
Miembro
 
Registrado: ago 2010
Ubicación: San Antonio, Paraguay
Posts: 38
Poder: 0
hoyosfelix Va por buen camino
Respuesta "Ayuda con consulta"

Hola, prueba de esta manera:

Código Delphi [-]
var    
vsql : string;  

begin   
  ....   
  vsql := ' SELECT C.IDCARRO, C.NOCARRO, C.INDICECONS, SUM(DHR.KMRECORRIDO), SUM(CO.CONSUMO) ';   
  vsql := vsql + ' FROM CARRO C INNER JOIN HOJARUTA HR ON HR.IDCARRO = C.IDCARRO ';   
  vsql := vsql + ' INNER JOIN DESCHOJARUTA DHR ON DHR.IDHOJARUTA = HR.IDHOJARUTA ';   
  vsql := vsql + ' INNER JOIN CONSUMO CO ON CO.IDCARRO = C.IDCARRO ';    
  vsql := vsql + ' WHERE CO.FECHA BETWEEN :FECHA1 AND :FECHA2 ';   
  vsql := vsql + ' GROUP BY C.IDCARRO, C.NOCARRO, C.INDICECONS ';   
  vsql := vsql + ' ORDER BY C.IDCARRO ';     
  SQL.Add(vsql);    
  ParamByName('FECHA1').AsString:=inicio;   
  ParamByName('FECHA2').AsString:=fin;   
  Open; 
end

Fijate en los espacios al inicio y final de cada vsql, eso te asegura que al concatenar tengas separada tu sql.

Saludos.

Última edición por Casimiro Noteví fecha: 13-09-2012 a las 23:43:51. Razón: Aparece en una sola línea, no formatea al estilo Delphi.
Responder Con Cita
  #6  
Antiguo 13-09-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
hoyosfelix, para que no salga el código "hecho un desastre" te aconsejo que primero envies el mensaje y seguidamente lo edites. El problema es que si le das a "previsualizar" antes de "enviar", se descuadra como te ha salido a ti.

Le tenemos que dar un repaso a la configuración del vbulletin
Responder Con Cita
  #7  
Antiguo 14-09-2012
Salnhack Salnhack is offline
Miembro
NULL
 
Registrado: oct 2011
Ubicación: Cuba
Posts: 71
Poder: 15
Salnhack Va por buen camino
Unhappy

Hola a todos he probado la via de hoyosfelix pero me sigue dando el mismo error

Error en sintaxis falta operador

http://clubdelphi.com/foros/attachme...9&d=1347566837

Última edición por Salnhack fecha: 14-09-2012 a las 15:04:33.
Responder Con Cita
  #8  
Antiguo 14-09-2012
hoyosfelix hoyosfelix is offline
Miembro
 
Registrado: ago 2010
Ubicación: San Antonio, Paraguay
Posts: 38
Poder: 0
hoyosfelix Va por buen camino
Respuesta "Ayuda con consulta"

Buen día, vamos por paso.
1º Quiero saber si la consulta funciona, favor probar en el diseñador de consulta SQL de Access, ejecutarlo y ver resultados.
2º Podriamos ver de nuevo tu sintaxis en Delphi.
3º En tu form poner 2 componentes TDateTimePicker que se llamen fecha1 y fecha2, que vamos a pasar como parámetro a tu consulta.
4º Luego, reemplazar tu código actual por el siguiente, ya que veo en el código anterior que las variables que se pasan a la SQL no son fechas, son enteros pero no fecha de la forma '01/09/2012' y el SQL te lanza el error ya que espera una fecha válida.

Código SQL [-]
var    
  vsql : string;  
begin        
  vsql := ' SELECT C.IDCARRO, C.NOCARRO, C.INDICECONS, SUM(DHR.KMRECORRIDO), SUM(CO.CONSUMO) ';   
  vsql := vsql + ' FROM CARRO C INNER JOIN HOJARUTA HR ON HR.IDCARRO = C.IDCARRO ';   
  vsql := vsql + ' INNER JOIN DESCHOJARUTA DHR ON DHR.IDHOJARUTA = HR.IDHOJARUTA ';   
  vsql := vsql + ' INNER JOIN CONSUMO CO ON CO.IDCARRO = C.IDCARRO ';    
  vsql := vsql + ' WHERE CO.FECHA BETWEEN :FECHA1 AND :FECHA2 ';   
  vsql := vsql + ' GROUP BY C.IDCARRO, C.NOCARRO, C.INDICECONS ';   
  vsql := vsql + ' ORDER BY C.IDCARRO ';     

  SQL.Close;
    SQL.Clear;
    SQL.Add(vsql);    
    Query.Params.Items[0].AsDate:=fecha1.Date;
    Query.Params.Items[1].AsDate:=fecha2.Date;
  SQL.Open; 
end

Saludos.
Responder Con Cita
  #9  
Antiguo 13-09-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Ves, así es más fácil, es que no tenemos bola mágica
Código Delphi [-]
SQL.Add('SELECT C.IDCARRO, C.NOCARRO, C.INDICECONS, SUM(DHR.KMRECORRIDO), SUM(CO.CONSUMO)');      
SQL.Add('  FROM CARRO C INNER JOIN HOJARUTA HR ON HR.IDCARRO = C.IDCARRO');      
SQL.Add('  INNER JOIN DESCHOJARUTA DHR ON DHR.IDHOJARUTA = HR.IDHOJARUTA');      
SQL.Add('  INNER JOIN CONSUMO CO ON CO.IDCARRO = C.IDCARRO');      
SQL.Add('  WHERE CO.FECHA BETWEEN :FECHA1 AND :FECHA2');      
SQL.Add('  GROUP BY C.IDCARRO, C.NOCARRO, C.INDICECONS');      
SQL.Add('  ORDER BY C.IDCARRO');

Te falta poner un espacio antes o después, como quieras, en cada línea, para que luego no queden todas "pegadas"

EDITO: Lo que ha dicho hoyosfelix, no lo había visto.
Responder Con Cita
  #10  
Antiguo 13-09-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Te falta poner un espacio antes o después, como quieras, en cada línea, para que luego no queden todas "pegadas"
Eso no es necesario, pues quedan en líneas distintas.

// Saludos
Responder Con Cita
  #11  
Antiguo 13-09-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.678
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Eso no es necesario, pues quedan en líneas distintas.
// Saludos
Cierto, solamente hace falta cuando se usa el método escrito por hoyosfelix.
Me he confundido porque yo suelo usar sql.text:
Código Delphi [-]
query.sql.text := 'select *' +
'  from tabla'+
'  where algo';
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ayuda con consulta SQL n03l SQL 4 18-04-2007 22:03:40
Ayuda con consulta raco Varios 6 06-04-2005 02:14:25
Ayuda con consulta SQL tgsistemas SQL 9 18-02-2004 16:14:07
Ayuda con consulta JorgeBec SQL 7 21-10-2003 20:25:16
ayuda en consulta bismarito Firebird e Interbase 1 29-07-2003 00:40:45


La franja horaria es GMT +2. Ahora son las 01:22:33.


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