Delphi - Sumar valores de un DBGRID

 
Vista:

Sumar valores de un DBGRID

Publicado por Jose Ruiz (9 intervenciones) el 16/01/2002 10:44:07
Hola a Tod@s:

He construido un dbgrid donde muestro importes de cd's. ¿Cómo obtengo el total de lo que suman los importes de los cd's que aparecen en el dbgrid sin necesidad de construir otra consulta?

El contenido del dbgrid varía con distintos filtros que se le pueden aplicar al mismo. Luego la suma debe variar de forma independiente a la consulta original.

GRACIAS.

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 valores de un DBGRID

Publicado por vte (108 intervenciones) el 16/01/2002 12:57:13
Lo normal es recorrer la tabla o la consulta al que esta asociado el dbgrid con un bucle, para ir sumando los importes

Si no quieres que se vea ese movimiento en el grid, le aplicas un DisableControls al control de los datos y cuando acabes le haces un First y un EnableControls.
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

RE:Sumar valores de un DBGRID

Publicado por Victor (85 intervenciones) el 16/01/2002 13:28:35
Declará una variable llamado sumatoria, en el evento form create, poné lo sigte:

sumatoria := 0;
Table1.first;
while not Table1.eof do
begin
sumatoria := sumatoria + Table1.FieldByname('importe').asinteger;
Table1.next;
end;

Y en tu evento afterpost de tu tabla poné lo sigte:

sumatoria := sumatoria + Table1.FieldByname('importe').asinteger;

El 1er código es para obtener la sumatoria de los registros existentes y el 2do es para calcular después de cada inserción.

Esto funciona cuando es solo inserción lo que haces, pero si haces alguna modificación, tenes que agregar algunos códigos que resten de la sumatoria el importe viejo y sumar el importe nuevo en el evento beforeEdit o AfterEdit de la tabla. Y para cuando eliminas, restar el importe en el evento beforedelete de la tabla.

Espero que te sirva.
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