Delphi - sumar filas de un dbgrid

 
Vista:

sumar filas de un dbgrid

Publicado por dlopez (85 intervenciones) el 19/11/2002 16:30:40
hola
he tratado de sumar los valores de una columna de un dbgrid, usando los eventos OnDrawDataCell u OnDrawColumnCell, pero me da un resultado extraño. Este es el codigo que utilizo:
if uppercase(Column.Title.Caption)='CANTIDAD' then
CantExistencias:=CantExistencias+qryInforme.FieldByName('Cantidad').AsInteger;

quisiera saber si hay un error en mi código, porque asumo que este código se ejecuta cada vez que se dinuja una celda o columna. También me sería útil conocer otra forma de hacerlo.

Gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:sumar filas de un dbgrid

Publicado por Ernesto D'Spirito (706 intervenciones) el 20/11/2002 12:19:23
Esos eventos se producen cuando se pinta una celda. Como habrás notado, no es precisamente el mejor lugar para sumar, no sé si me explico... Olvídate del DbGrid, y recorre el dataset (la tabla o consulta) para hacer el cálculo cada vez que se requiera (por ejemplo en los eventos AfterOpen, AfterPost y AfterDelete).

CantExistencias := 0;
with qryInforme do begin
DisableControls;
try
Posicion := Bookmark;
First;
while not Eof do begin
CantExistencias := CantExistencias
+ FieldByName('Cantidad').AsInteger;
Next;
end;
try Bookmark := Posicion except end;
finally
EnableControls;
end;
end;

Otra posibilidad sería hacer el cálculo sólo la primera vez y después detectar inteligentemente los cambios para no tener qu sumar todo nuevamente cada vez que se agrega, modifica o elimina un registro.

Otra alternativa sería realizar el cálculo mediante una consulta SQL aparte.

Ernesto D'Spirito
http://www.latiumsoftware.com/es
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar