Ver Mensaje Individual
  #12  
Antiguo 21-04-2008
rolandoj rolandoj is offline
Miembro
 
Registrado: abr 2007
Posts: 395
Reputación: 18
rolandoj Va por buen camino
Un enfoque alternativo

Hola,

En primer lugar, hay que tener en cuenta que en el TDBGrid puede haber campos calculados, en cuyo caso, la solución basada en usar un TQuery para obtener la suma con un :

Código SQL [-]
Select Sum(CampoBuscado) From Tabla

no serviría, a menos que pudieras reproducir en el Select el campo calculado lo que no siempre es posible o fácil. Sin embargo, en la mayoría de los casos el Select es una buena solución

Para usar otro enfoque, no debes trabajar con el TDBGrid sino con su dataset asociado, y realizar la suma con un While. Veamos un ejemplo con un solo campo a sumar:

Código Delphi [-]
Function TMiFormulario.SumarCampoouble;
Var
  Suma:          Double; 
Begin
     Suma := 0;
     Try
        With MiDataSet Do Begin
             DisableControls;  
             First;
             While Not EoF Do Begin
                   Suma := Suma + MiDataSetCAMPO.AsFloat;
                   Next;
             End;
        End; 
     Finally
        MiDataSet.EnableControls;
     End; 
     SumarCampo := Suma;
End;

En este caso MiDataSet es típicamente un TQuery y MiDataSetCAMPO es un campo permanente correspondiente al campo de la base de datos que se desea sumar. Observa el uso de DisableControls y EnableControls; esto se hace para evitar refrescar la pantalla mientras se calcula la suma.

Creo que te será facil adaptar esta solución a varios campos.

Suerte
Responder Con Cita