Array
(
)

Somar Coluna de Um DBgrid

Xadriano
   - 01 set 2004

Tenho Um banco de dados e na tela de cadastro tenho 2 tabelas: Clientes e arrecadação, 1 para muitos respectivamente, cada clientes tem uma arrecadação mensal no dbgrid, gostaria criar campo que some esta arrecadação do dbgrid(coluna).

Banco de Dados: Access
Componentes ADoTable.

Grato,


Adriano.


Maurício Santos
   - 02 set 2004

Olá!!!

Esta rotina eu usei em BD Paradox. Espero que te ajude.

var
Total: Currency;
begin
Total := 0;
DataModule.NomeTabela.DisableControls;
try
while not DataModule.NomeTabela.EOF do begin
Total := Total + DataModule.NomeTabela.FieldByName(´NomeDoCampoASomar´).AsCurrency;
DataModule.NomeTabela.Next;
end;
finally
DataModule.NomeTabela.EnableControls;
Edit1.Text := FormatFloat(´#,0.00´, Total);
end;


Sucesso!!!


Maurício


Xadriano
   - 03 set 2004

voce poderia me dizer em qual componente e qual evento coloco esta rotina; sou iniciante não tenho muita experiencia!! :oops:

Ficarei muito grato.

adriano


Chcoelho
   - 03 set 2004

Olá......tem uma materia no SITE CLUBE DELPHI que lida com campos agregado...é muito bom!! Dê uma olhada.....vale a pena!!


Carlosfim
   - 03 set 2004

A solução postada pelo amigo Maurício funciona, mas se vc tiver muitos registros ela pode demorar um pouco, visto que ela soma registro a registro.

Se vc precisar somar muitos campos talvez seja o caso de utilizar um componente ADOQuery e somar através de SQL, desta forma:

#Código

ADOQuery.Active := False;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(SELECT SUM(CAMPO A SER SOMADO) FROM TABELA WHERE [CRITÉRIOS]);
ADOQyery.Open;


Daí vc acessa o resultado através da seguinte linha:

#Código
ADOQuery.FieldByName(´NOME DO CAMPO´).asFloat;


Espero ter ajudado.


Carlosfim
   - 03 set 2004

A solução postada pelo amigo Maurício funciona, mas se vc tiver muitos registros ela pode demorar um pouco, visto que ela soma registro a registro.

Se vc precisar somar muitos campos talvez seja o caso de utilizar um componente ADOQuery e somar através de SQL, desta forma:

#Código

ADOQuery.Active := False;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add(SELECT SUM(CAMPO A SER SOMADO) FROM TABELA WHERE [CRITÉRIOS]);
ADOQyery.Open;


Daí vc acessa o resultado através da seguinte linha:

#Código
ADOQuery.FieldByName(´NOME DO CAMPO´).asFloat;


Espero ter ajudado.