somar dados do grid a medida que for sendo inserido

26/02/2013

1

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
Responder

Posts

26/02/2013

Joel Rodrigues

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.
Responder

26/02/2013

Flavio Silva

after post de onde?

tabela, grid, dataset
Responder

26/02/2013

Joel Rodrigues

O afterpost é um evento do dataset.
Responder
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!
Responder
Olá.

Se você estiver usando ClientDataset use campo calculado.

É uma forma rápida e fácil.

At.
Responder

27/02/2013

Joni Nunes

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
Responder

30/06/2013

José

Tópico concluído.
Responder