Somar Coluna de Um DBgrid

01/09/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.


Xadriano

Respostas

02/09/2004

Maurício Santos

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


Responder Citar

03/09/2004

Xadriano

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


Responder Citar

03/09/2004

Chcoelho

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


Responder Citar

03/09/2004

Carlosfim

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:

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


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

ADOQuery.FieldByName(´NOME DO CAMPO´).asFloat;


Espero ter ajudado.


Responder Citar

03/09/2004

Carlosfim

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:

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


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

ADOQuery.FieldByName(´NOME DO CAMPO´).asFloat;


Espero ter ajudado.


Responder Citar