PDA

Ver la Versión Completa : Suma de Registros


gerasA
18-01-2008, 21:19:53
Hola!
Tengo dos campos en una tabla Peso, Total.
Como le hago para sumar los registros del total. por ejemplo:
1. peso=100 total=100
2. Peso=200 total=300

Tengo dos edit el usuario captura el peso en uno y yo kiero ke el total del ultimo registro de la tabla aparesca en el edit del total automaticamentre cada ves que corra la aplicacion
Gracias

enecumene
18-01-2008, 21:24:35
Hola, pones un query en el form y en el evento OnCreate del form pones esto:

Query1.SQL.Text = 'select SUM(campo) from tabla';
Query1.Open;
Edit1.Text := Query1.Field[0].Asstring;

Saludos.

egostar
18-01-2008, 22:02:05
Siempre he tenido cierta duda respecto a usar el evento OnCreate para usar sentencias "actualizables", lo digo porque por ejemplo que pasa si está consulta la tengo que "refrescar" cada vez que invoco la forma, como solo se crea una vez no se verán afectados los registros.

Claro que eso se resuelve creando las formas en tiempo de ejecución, pero para novatos (como Caral, o como FerCastro :D:D:D) les complica la vida y tendrán dolores de cabeza tratando de decifrar donde está el problema.

En fin, solo es una duda muy dudosa..... :)

Salud OS

gerasA
18-01-2008, 22:24:33
:)Gracias Enecumene ya salio
Solo otra pregunta y si solo quisieraa el ultimo registro de una tabla seria asi:
Query1.SQL.Text = 'select Last(campo) from tabla';
Query1.Open;
Edit1.Text := Query1.Field[0].Asstring;

O en donde iria el last

jcarteagaf
18-01-2008, 22:25:07
Dependiendo del tipo de conexion que use (BDE,ADO, Sdac, etc.) la solucion seria hacerlo mediante un query como te sugirieron antes (puede ser en el evento onCreate o onShow o en el AfterOpen de tu tabla). Si son tablas en memoria o tablas temporales y la cantidad de datos no es muy grande uso la siguiente funcion:

function Totalizar(archivo : TDataSet; sField : String) : Double;
var bmReg : TBookmark;
fTotal : Double;
begin
with Archivo do
try
DisableControls;
bmReg := GetBookmark;
first;
fTotal := 0;
while not Eof do
begin
fTotal := fTotal + Fieldbyname(sField).AsFloat;
next;
end;
finally
GotoBookmark(bmReg);
FreeBookmark(bmReg);
EnableControls;
end;
result := fTotal;
end;


En tu caso la llama seria

Total := Totalizar(Tabla,'TOTAL');

Saludos

enecumene
22-01-2008, 16:19:54
:)Gracias Enecumene ya salio
Solo otra pregunta y si solo quisieraa el ultimo registro de una tabla seria asi:Query1.SQL.Text = 'select Last(campo) from tabla';
Query1.Open;
Edit1.Text := Query1.Field[0].Asstring;

O en donde iria el last

Seria de esta manera:

Query1.SQL.Text = 'select Max(ID)from tabla';
Query1.Open;
Edit1.Text := Query1.Field[0].Asstring;

Saludos.

gerasA
22-01-2008, 18:05:15
De verdad muchas gracias Enecumene
Ahora que tengo que hacer?
Cerrar el hilo o dejarlo asi?
Bye saludos a todos

enecumene
22-01-2008, 18:09:46
De verdad muchas gracias Enecumene
Ahora que tengo que hacer?
Cerrar el hilo o dejarlo asi?
Bye saludos a todos

Solo dejalo asi, los unicos que pueden cerrar el hilo son los moderadores.

Saludos.