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 10-08-2005
nuri nuri is offline
Miembro
 
Registrado: abr 2005
Posts: 102
Poder: 20
nuri Va por buen camino
Question ¿Cómo funciona la función sum en SQL?

Hola a todos:

¿Cómo funciona la función sum en SQL?
Me gustaría realizar la siguiente consulta:
Código Delphi [-]
Query1.SQL.Text:='SELECT Sum(LITROS) As TOTAL FROM REPOSTAJE WHERE (KM_TOTALES=:km) ORDER BY FECHA DESC';
Query1.ParamByName('km').AsFloat:=0;
FormImprimeRepostaje.Query1.Active:=True;
If not Query1.IsEmpty then
litros:=Query1.FieldByName('TOTAL').AsFloat;

Tengo delphi 5 y trabj con querys.

Esta la he probado pero me da error.
Gracias a quien pueda darme una pista.
Atentamente
Nuri
Responder Con Cita
  #2  
Antiguo 10-08-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Hola de nuevo!

La sentencia que tienes en el código sólo te va a devolver un registro, la suma total de litros. No tiene sentido realizar ninguna ordenación. Sólo quita la parte order by y listo.

Un saludo

Edu
Responder Con Cita
  #3  
Antiguo 10-08-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Ah!, y otra cosa, mejor usa Query.Open en lugar de Query.Active := true


Un saludo

Edu
Responder Con Cita
  #4  
Antiguo 10-08-2005
nuri nuri is offline
Miembro
 
Registrado: abr 2005
Posts: 102
Poder: 20
nuri Va por buen camino
Question

lo he quitado pero me da el siguiente error

Código:
Field ID not Found
El campo ID es el campo principal de la tabla.
Tengo que mostrarlo tb??
Gracias por tu ayuda
Atentamente
Nuri
Responder Con Cita
  #5  
Antiguo 10-08-2005
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
La funcion SUM en Sql

Hola:

Normalmente la funcion SUM() esta asociada a un Group by prueba con eso a ver si resuelves el problema.

Saludos
Luis Garcia

_____________________________
La mejor manera de decir es hacer
Responder Con Cita
  #6  
Antiguo 10-08-2005
nuri nuri is offline
Miembro
 
Registrado: abr 2005
Posts: 102
Poder: 20
nuri Va por buen camino
Question

okis gracias por la respuesta.
Me sigue dando el mismo error. En realidad el prblema debe ser otro puest que en esta consulta también me da error.

Código Delphi [-]
QueryRepostaje.SQL.Text:='SELECT LITROS FROM REPOSTAJE';
FormImprimeRepostaje.QueryRepostaje.Open;

Me da el error:
Código:
Field ID not found
o
Código:
Field MATRICULA not found
Dependiendo del campo que ponga en la consulta.
¿Es que tengo alguna propiedad desactivada que no me permite realizar dicha consulta?.
Con todos los campos, es decir, usando * me funciona perfectamente.
Gracias por todo
Atentamente
Nuri
Responder Con Cita
  #7  
Antiguo 10-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
El problema es que en alguna de las propiedades de tu TQuery haces referencia al campo ID (o matrícula) y por eso trata de encontrarlo, pero en tu consulta no esta incluido, por eso marca ese error; por lo mismo, cuando haces un SELECT * (como ahi sí va incluido el campo id), ahi no te marca el error. Trata de hacer lo siguiente:
Código Delphi [-]
with QueryRepostaje do begin
SQL.Clear; //tal vez esto es lo que te hace falta...
SQL.Add('SELECT SUM(Litros) AS Total') 
SQL.Add('FROM Repostaje');
Open;
showmessage(FieldValues['Total']); 
end; //with

a ver si te sigue dando el mismo error. De cualquier manera, revisa las propiedades de tu TQuery, para ver si en alguna de ellas haces referencia a esos campos.
__________________


Última edición por ContraVeneno fecha: 10-08-2005 a las 18:40:42.
Responder Con Cita
  #8  
Antiguo 10-08-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
¿Esa Query la tienes asociada a un grid?

Yo diría que si, ya esto está perfecto:
Código Delphi [-]

if Query1.Active then Query1.Close;
Query1.SQL.Text:='SELECT Sum(LITROS) As TOTAL FROM REPOSTAJE WHERE (KM_TOTALES=:km) ';
Query1.ParamByName('km').AsFloat:=0;
Query1.Open;
If not Query1.IsEmpty then
litros:=Query1.FieldByName('TOTAL').AsFloat;

¿No tendrás en la tabla Repostaje un campo llamado TOTAL no?

Por cierto, una pregunta de curioso: ¿Para qué quieres saber los litros que ha gastado si los kilometros totales son cero?

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 11-08-2005
nuri nuri is offline
Miembro
 
Registrado: abr 2005
Posts: 102
Poder: 20
nuri Va por buen camino
okis, curioso no??, es que esta personalizado el programa a lo k me manda mi jefe y como a veces se olvidan de poner los km_totales pos debo tener los litros en cuenta para el proximo repostaje k sí estén los km totales.
Gracias.
Atentamente
Nuri
Responder Con Cita
  #10  
Antiguo 11-08-2005
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Dímelo a mi, que tengo que tener en cuenta Kilometraje (del tablero y del hubodómetro) litros totales u horas transcurridas. Se suponía que estos 4 datos siempre hiban a estar disponibles, pero en la práctica no siempre suele ser así, así que tengo que considerar de las 4 opciones, la que ocurra primero de acuerdo a un intérvalo.
Ya sueño con kilometrajes y litros de combustible!!!!!!
__________________

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 23:50:06.


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