somar dados do grid a medida que for sendo inserido

Delphi

26/02/2013

Boa tarde,

Estou precisando de uma ajuda, a questão é a seguinte:

Tenho um DBGrid em minha aplicação onde o cliente ira cadastrar os serviços que estao sendo executado, pois minha aplicação é um gerenciador de OS para oficina de carro.
Clica no Botao inserir e adiciona um registro, depois salva e por ai vai.

O que estou precisando que a medida que for inserindo um registro e va adicionando a soma em DBEdit ou DBText, pois essa soma será armazena numa tabela Pai.

Exemplo:

Adicione primeiro registro de R$ 200,00 automaticamente o edit Valor total exibira o Total cadastrado.
Então ao incluir um novo registro de R$ 100,00 ao salva
Flavio Silva

Flavio Silva

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

26/02/2013

Você pode fazer um loop para varrer o dataset e somar estes valores. Faça isso no evento onAfterPost, que ocorre sempre que é feita uma inserção ou atualização na tabela.
GOSTEI 0
Flavio Silva

Flavio Silva

26/02/2013

after post de onde?

tabela, grid, dataset
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

26/02/2013

O afterpost é um evento do dataset.
GOSTEI 0
Thiago Delalibera

Thiago Delalibera

26/02/2013

Flávio eu tenho um sistema comercial com controle de OS, para somar eu faço o seguinte, criei a procedure:

procedure TfrmCadOrdemServico.SomaProdutos;
begin
DM.sqlSomaOrdemServico.Close;
DM.sqlSomaOrdemServico.SQL.Text := 'SELECT SUM(PRECOTOTAL) AS RESULTADO FROM PRODUTOSOS WHERE CODIGOOS=' + '''' + IntToStr(CodigoOS) + '''';
DM.sqlSomaOrdemServico.Open;

eSubTotal.Text:= FormatFloat('##,##0.00', DM.sqlSomaOrdemServico.FieldByName('RESULTADO').Value);
end;


O segredo é o seguinte o meu Query "sqlSomaOrdemServico" está conectado na mesma Transaction do Query que esta inserindo os valores no banco e mostrando no dbgrid, ou seja, sempre que você inserir e chamar sua atualização da dbgrid, chame também o "SomaProdutos", basta adaptar as suas necessidades, espero que ajude!
GOSTEI 0
Francisco Macário

Francisco Macário

26/02/2013

Olá.

Se você estiver usando ClientDataset use campo calculado.

É uma forma rápida e fácil.

At.
GOSTEI 0
Joni Nunes

Joni Nunes

26/02/2013

Em todos os exemplos citados, é melhor usar campo calculado, para não ficar abrindo e fechando dataset, o que nesse caso, faz processamento no servidor (buscar dados novamente) e transportar pela rede.

Processando por campo calculado, fica tudo mais rápido.

abraço
GOSTEI 0
José

José

26/02/2013

Tópico concluído.
GOSTEI 0
POSTAR