Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   ¿Cómo funciona la función sum en SQL? (https://www.clubdelphi.com/foros/showthread.php?t=24156)

nuri 10-08-2005 13:22:50

¿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

epuigdef 10-08-2005 13:26:00

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

epuigdef 10-08-2005 13:26:39

Ah!, y otra cosa, mejor usa Query.Open en lugar de Query.Active := true


Un saludo

Edu

nuri 10-08-2005 13:49:14

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

lgarcia 10-08-2005 15:26:42

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

nuri 10-08-2005 16:02:16

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.:confused:
Gracias por todo
Atentamente
Nuri

ContraVeneno 10-08-2005 17:27:50

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.

Lepe 10-08-2005 18:14:50

¿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? :p

Un saludo

nuri 11-08-2005 12:28:58

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

ContraVeneno 11-08-2005 16:12:25

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!!!!!! :D


La franja horaria es GMT +2. Ahora son las 20:36:13.

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