Fórum Problemas com calculo na query #336713

24/01/2007

0

Olá Pessoal... estou com um probleminha aki..
estou desenvolvendo um tipo de extrato de banco pelo fortes report... do tipo
_______________
saldo inicial = R$ 1000,00
_____________________
Operação         Tipo        Valor R¬      Saldo Final
Compra           Debito       100,00           900,00
Emprestimo      Debito        80,00           820,00
Venda              Credito     200,00          1020,00
_____________________________________________


os campos (operação, tipo e valor) fazem parte da tabela então estão ligado direto na query.... já o campo saldo final é um campo caculated q criei e estou mandando fazer o calculo no evento onCalcFields da query.. como o codigo:
if tipo = Debito then
   querycampo.value := saldoanterior - queryvalor.value;
   saldoanterior := querycampo.value;
else
   querycampo.value := saldoanterior - queryvalor.value
   saldoanterior := querycampo.value;
end;

o estranho eh q ele calcula o valor do primeiro registro 2 vezes, somente do 1º registro, os outro ele faz o calculo certo... ex:
_______________
saldo inicial = R$ 1000,00
_____________________
Operação         Tipo        Valor R¬      Saldo Final
Compra           Debito       100,00           800,00
Emprestimo      Debito        80,00           720,00
Venda              Credito     200,00           920,00
_____________________________________________

no primeiro registro ele fez 1000-100-100 retornou o saldo final errado, prejudicando todo o saldo final....

alguem tem alguma idéia o pq disso..
estou no aguardo.. obrigado...


Thiago Coleti

Thiago Coleti

Responder

Posts

24/01/2007

Leufmt

O problema deve estar aqui:
if tipo = Debito then
querycampo.value := saldoanterior - queryvalor.value;
saldoanterior := querycampo.value;
else
querycampo.value := saldoanterior - queryvalor.value
saldoanterior := querycampo.value;
end;

Acho que deve ser assim
if tipo = Debito then
querycampo.value := saldoanterior - queryvalor.value;
saldoanterior := querycampo.value;
else
querycampo.value := saldoanterior + queryvalor.value
saldoanterior := querycampo.value;
end;


Responder

Gostei + 0

25/01/2007

Thiago Coleti

Caro leufmt ...estava lendo seu post... e pelo q percebi o q vc postou é identico ao q postei... não alterou nada....
na realidade.. aonde acha q eh o problema???
estou no aguardo.
obrigado..


Responder

Gostei + 0

25/01/2007

Leufmt

Mudei sim...
Olhe com atenção


Responder

Gostei + 0

25/01/2007

Thiago Coleti

Olá leufmt...
reparei bem e vi q vc trocou o sinal de - por + no else...
mais no meu post isso foi um erro de digitação meu..... no meu código está igual o seu.....
o problema eh q ele executa ou o if ou o else (dependendo se for DEBITO ou CREDITO) duas vezes no primeiro registro da query....
isso no evento onCalcFields da query..

P.S. valew por corrigir nem vi q tinha digitado errado..
tem alguma idéia do pq desse problema???
obrigado pela ajuda..


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar