Fórum Como fazer fazer para acumular Valores... #275245
02/04/2005
0
Ir Colocando Numeros qualquer em um edit e em outro edit ir acumulando os valores digitados.
No VB essa instrução é ´Static´ e no Delphi
Agradeço desde ja...
No VB essa instrução é ´Static´ e no Delphi
Agradeço desde ja...
Alves
Curtir tópico
+ 0
Responder
Posts
03/04/2005
Edilcimar
JOgue para dentro de uma variável e depois jogue para o segundo edit
Responder
Gostei + 0
03/04/2005
Alexsandro
Oi Alves,
Estou com o mesmo problema e infelizmente ninguém me ajudou. Tenho uma tela onde crio registros de despesas. Alguns desses registros são pagos em Dinheiro, outros com cartão e outros com Cheque. O que tenho são três campo que somam o TOTAL DE DESPESAS em DINHEIRO, CARTÃO E CHEQUE do mês atual. Uso Access com ADO. Já postei 3 mensagens mas ninguém me ajudou.
As dúvidas que tenho:
1) Entendo que terei que ler toda a tabela e, dependendo do tipo de pgamento somar os campos TOTAIS DINHEIRO, CHEQUE E CARTÃO. Faço isso mas sempre que vou incluir um novo registro ou excluir, ou até modificar um dos registros os TOTAIS não atualizam. Logo, não sei em que evento colocar a função para ter que atualizar sempre que modifico a tabela. Mas em que EVENTO TRATAR ISSO? será que tenho que dar um REFRESH ou coisa parecida?
2) Minha sgunda dúvida, no lugar de usar toda a rotina abaixo que faz essa soma e envia para campo TEDIT na tela, não seria melhor usar QUERIES? Mas em caso possitivo em que eventos eu chamo a query para sempre ter estes valores atualizado quando a tabela mudar algum valor?
Pessoal, VAMOS AJUDAR!!!!
Segue minha rotina:
procedure TDataMod.ADOTable_Despesas_DiariasCalcFields(DataSet: TDataSet);
// Este procedimento soma todosos campos de totais da Tela de Despesas Diárias
var cTotalDin, cTotalChq, cTotalCrd, cTotalDeb, cTotalGer: Currency;
begin
// Inicializa os contadores
cTotalDin := 0;
cTotalChq := 0;
cTotalCrd := 0;
cTotalDeb := 0;
cTotalGer := 0;
begin
if DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´DI´ then
begin
cTotalDin := cTotalDin + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
DataMod.ADOTable_Despesas_DiariasACM_TOT_DIN.AsCurrency :=
DataMod.ADOTable_Despesas_DiariasACM_TOT_DIN.AsCurrency +
+ DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end
else
if DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´CC´ then
begin
cTotalCrd := cTotalCrd + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end
else
if DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´CD´ then
begin
cTotalDeb := cTotalDeb + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end
else
cTotalChq := cTotalChq + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end;
// Soma todos os campos e apresenta o total geral
cTotalGer := cTotalDin + cTotalCrd + cTotalDeb + cTotalChq;
// Atribue aos campos da Tela
Form_Despesas_Diarias.FTotDin.Text := FormatFloat(´#,0.00´,cTotalDin);
Form_Despesas_Diarias.FTotCheque.Text := FormatFloat(´,0.00´,cTotalChq);
Form_Despesas_Diarias.FTotCarCred.Text := FormatFloat(´,0.00´,cTotalCrd);
Form_Despesas_Diarias.FTotCarDeb.Text := FormatFloat(´,0.00´,cTotalDeb);
Form_Despesas_Diarias.FTotalGer.Text := FormatFloat(´#,0.00´,cTotalGer);
end;
aLEX
Estou com o mesmo problema e infelizmente ninguém me ajudou. Tenho uma tela onde crio registros de despesas. Alguns desses registros são pagos em Dinheiro, outros com cartão e outros com Cheque. O que tenho são três campo que somam o TOTAL DE DESPESAS em DINHEIRO, CARTÃO E CHEQUE do mês atual. Uso Access com ADO. Já postei 3 mensagens mas ninguém me ajudou.
As dúvidas que tenho:
1) Entendo que terei que ler toda a tabela e, dependendo do tipo de pgamento somar os campos TOTAIS DINHEIRO, CHEQUE E CARTÃO. Faço isso mas sempre que vou incluir um novo registro ou excluir, ou até modificar um dos registros os TOTAIS não atualizam. Logo, não sei em que evento colocar a função para ter que atualizar sempre que modifico a tabela. Mas em que EVENTO TRATAR ISSO? será que tenho que dar um REFRESH ou coisa parecida?
2) Minha sgunda dúvida, no lugar de usar toda a rotina abaixo que faz essa soma e envia para campo TEDIT na tela, não seria melhor usar QUERIES? Mas em caso possitivo em que eventos eu chamo a query para sempre ter estes valores atualizado quando a tabela mudar algum valor?
Pessoal, VAMOS AJUDAR!!!!
Segue minha rotina:
procedure TDataMod.ADOTable_Despesas_DiariasCalcFields(DataSet: TDataSet);
// Este procedimento soma todosos campos de totais da Tela de Despesas Diárias
var cTotalDin, cTotalChq, cTotalCrd, cTotalDeb, cTotalGer: Currency;
begin
// Inicializa os contadores
cTotalDin := 0;
cTotalChq := 0;
cTotalCrd := 0;
cTotalDeb := 0;
cTotalGer := 0;
begin
if DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´DI´ then
begin
cTotalDin := cTotalDin + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
DataMod.ADOTable_Despesas_DiariasACM_TOT_DIN.AsCurrency :=
DataMod.ADOTable_Despesas_DiariasACM_TOT_DIN.AsCurrency +
+ DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end
else
if DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´CC´ then
begin
cTotalCrd := cTotalCrd + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end
else
if DataMod.ADOTable_Despesas_DiariasDES_TIPO.Text = ´CD´ then
begin
cTotalDeb := cTotalDeb + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end
else
cTotalChq := cTotalChq + DataMod.ADOTable_Despesas_DiariasDES_VALOR.Value;
end;
// Soma todos os campos e apresenta o total geral
cTotalGer := cTotalDin + cTotalCrd + cTotalDeb + cTotalChq;
// Atribue aos campos da Tela
Form_Despesas_Diarias.FTotDin.Text := FormatFloat(´#,0.00´,cTotalDin);
Form_Despesas_Diarias.FTotCheque.Text := FormatFloat(´,0.00´,cTotalChq);
Form_Despesas_Diarias.FTotCarCred.Text := FormatFloat(´,0.00´,cTotalCrd);
Form_Despesas_Diarias.FTotCarDeb.Text := FormatFloat(´,0.00´,cTotalDeb);
Form_Despesas_Diarias.FTotalGer.Text := FormatFloat(´#,0.00´,cTotalGer);
end;
aLEX
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)