Calculo total dos produtos

Delphi

04/11/2011

Ola meu nome e Adriano,

Estou criando um sistema de vendas, onde tenho uma tabela de vendas, cod_produto, valor_unitario, quantidade, valor_total
exemplo: produto 1 10,00
produto 2 20,00
ou seja a mesma venda e juntar os dois valores(o total da venda ).

peço a gentileza de todos para me ajudarem,

obrigado

Adrianogserafim

Adrianogserafim

Curtidas 0

Respostas

Ricardo Rodrigues

Ricardo Rodrigues

04/11/2011

Não entendi direito sua dúvida, mais pelo que entendi .... por exemplo, caso vc esteja utilizando clientdataset, vc pode estar utilizando um campo calculado ou um aggregate.


Att.
Ricardo Rodrigues
GOSTEI 0
Adrianogserafim

Adrianogserafim

04/11/2011

No momento estou utilizando o tibtable,
tenho uma tabela cvenda esse e o cabeçalho da venda onde esta o total da nota de venda val_t_nota
tenho outra tabela dvenda onde esta o detalhe da venda e o campo valor total dos produtos val_tot

ou seja preciso jogar o valor total da venda dos produtos em um dbedit e salvar na tabela cvenda val_t_nota
cod_pro descriçao quanti uni valor total
1 tinta 1 10 10
2 camisa 2 20 40

esses campos sao da tabela dvenda

dai eu calculo o total dos produtos e salvo no campo valor total da venda = 50 que seria o campo cvenda val_t_nota

GOSTEI 0
Wanderson Cardoso

Wanderson Cardoso

04/11/2011

Já que não está usando ClientDataSet voce pode usar variáveis e Calcular o total sem que vc incluir ou excluir um item da venda.
GOSTEI 0
Adrianogserafim

Adrianogserafim

04/11/2011

Pois bem eu tenho ate duas formas bem legais que vai servir para nossos amigos que estão acompanhando o fourm.
1.usando o evento atraves de um botao
var soma:currency;
begin
soma:=0;
DMORDEMDESERVICO.DVENDA.First; //posiciona no primeiro
while not DMORDEMDESERVICO.DVENDA.Eof do
begin
soma:= soma + DMORDEMDESERVICO.DVENDAVAL_TOT.value;
DMORDEMDESERVICO.DVENDA.Next;
end;
DMORDEMDESERVICO.CVENDA.Edit;
DMORDEMDESERVICO.CVENDAVAL_T_NOTA.Value := soma;

2.usando atraves de uma query
FMSaidaitem.QUESOMA.Close;
FMSaidaitem.QUESOMA.SQL.Clear;
FMSaidaitem.QUESOMA.SQL.Add(Select Sum(VAL_TOT) as TOTAL from DVENDA);
FMSaidaitem.QUESOMA.Open;

FMSaidaitem.Edit1.Text:= FormatFloat(0,FMSaidaitem.QUESOMATOTAL.Value);

o do evento do botao funciona direitinho porem acho que nao fica legal, ja o da query coloquei o codigo no AfterPost da tabela dai ele esta calculando o valor total nao so da venda 1 ou 2 e sim de todas as vendas realizadas.
vc sabe como faço para fazer ele calcular somente a cada venda?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

04/11/2011

adrianogserafim,
o segundo evento está calculando o total de todas as vendas por que você não está filtrando a venda que você quer e ainda está bucando a soma dos totais. Creio que para o seu caso, a consulta deveria ser algo como:
SELECT VAL_TOT AS TOTAL FROM DVENDA WHERE COD_VENDA = 001

Você deve estar usando Firebird/Interbase, certo?
Uma outra opção seria você criar um trigger na tabela dos itens da venda para que sempre que um item fosse inserido/excluído/alterado, o total da venda fosse atualizado. A ideia é fazer um trigger que seja executado em todas as operações (insert, update, delete). Com isso, você não precisaria REcalcular o total no seu código no Delphi, bastaria atualizar a query com os dados da venda para ver o total sempre atualizado. Sem falar que isso proporciona um melhor desempenho para a aplicação.

Espero ter sido claro e ajudado.
GOSTEI 0
Adrianogserafim

Adrianogserafim

04/11/2011

Eu so nao entendi a ultima parte onde cod_dvenda =001 ou seja nao entendi esse numero ja que ele vai calcular somete a venda 001
GOSTEI 0
POSTAR