Fórum Condição para fazer contas com ClientDataSet #347260
12/10/2007
0
if not dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´ then begin While not dm.cdsCheques.eof do begin vSaldoReal := vSaldoReal + dm.cdsChequesVALOR.AsFloat; dm.cdsCheques.Next; end; While not dm.cdsPagamento.eof do begin vSaldoReal := vSaldoReal - (dm.cdsPagamentoPAGAMENTO.AsFloat)-(dm.cdsPagamentoPAGAMENTO_JUROS.AsFloat) + (dm.cdsPagamentoJUROS.AsFloat); dm.cdsPagamento.Next; end; saldo_real.Text:=FloatToStr(vSaldoReal); end;
Só que está dando um erro na linha:if not dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´ then begin
Erro:
[Error] UnPagamento.pas(120): Operator not applicable to this operand type
Aí que está minha dúvida, quero fazer um condição que se o campo estiver SIM então ele não vai entrar para fazer o calculo. Entenderam?
Não sei se fazendo por StoreProcedure fica melhor, se alguem tentar me ajudar ficarei grato.
Jpauloss
Curtir tópico
+ 0Posts
12/10/2007
Jpauloss
if not dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´
então
dm.cdsChequesVALOR.AsFloat --> não quero que entre para calculo.
Gostei + 0
12/10/2007
Marco Salles
resolveria... Muito melhor do que esse If que voce esta fazendo..
Alem disso procure se informar sobre campos Agregados com ClientDataSet .....Voce pode usar o Sum(VALOR) etc e coisa e tal
Agora quanto ao erro é devido a falta do parentesis
if not (dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´) then begin
Gostei + 0
12/10/2007
Jpauloss
resolveria... Muito melhor do que esse If que voce esta fazendo..
Alem disso procure se informar sobre campos Agregados com ClientDataSet .....Voce pode usar o Sum(VALOR) etc e coisa e tal
Agora quanto ao erro é devido a falta do parentesis
if not (dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´) then begin
Fiz assim como você colocou mais num ta dando certo, então fiz assim:
if not (dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´) then begin (dm.cdsChequesVALOR.AsString=´0´)
Resumindo se for SIM então o ClientDataSetVALOR seu valor vai ser zero.
Mas ta dando esse erro na linha
While not dm.cdsCheques.eof do
O erro
[Error] UnPagamento.pas(123): Missing operator or semicolon
Que faço?
Gostei + 0
12/10/2007
Marco Salles
[color=red:22d895f132]1) parte[/color:22d895f132]
[u:22d895f132][b:22d895f132]Seu codigo inicialmente apresentado tem erro de Sintaxi e de Logica[/b:22d895f132][/u:22d895f132]
if not dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´ then begin While not dm.cdsCheques.eof do begin vSaldoReal := vSaldoReal + dm.cdsChequesVALOR.AsFloat; dm.cdsCheques.Next; end; While not dm.cdsPagamento.eof do begin vSaldoReal := vSaldoReal - (dm.cdsPagamentoPAGAMENTO.AsFloat)- (dm.cdsPagamentoPAGAMENTO_JUROS.AsFloat) + (dm.cdsPagamentoJUROS.AsFloat); dm.cdsPagamento.Next; end; saldo_real.Text:=FloatToStr(vSaldoReal); end;
[color=red:22d895f132]2) parte[/color:22d895f132]
Depois disso nesse ultimo tópico voce Apresentou algo que tb esta errado
Voce esta Atribuindo para um Campo o Valor ZERO , Sem dar um Edit na base de dados
[color=red:22d895f132]3) Parte[/color:22d895f132]
e finalmente voce disse que
[b:22d895f132]Que tem sua Sintaxi Totalmente Correta e portanto Não deve e não tem o Porque de dar nenhum tipo de ERRO[/b:22d895f132]
Bem o que é certo e voce deve insistir e usar filtro ao invez do Teste IF e usar campos Agreegados em vez do While eof do , quando se quer acumular o valor de algum campo.
saldo_real.Text:=FloatToStr(vSaldoReal);
end;[/code:1:22d895f132]
[color=red:22d895f132]2) parte[/color:22d895f132]
Depois disso nesse ultimo tópico voce Apresentou algo que tb esta errado
Voce esta Atribuindo para um Campo o Valor ZERO , Sem dar um Edit na base de dados
[color=red:22d895f132]3) Parte[/color:22d895f132]
e finalmente voce disse que
[b:22d895f132]Que tem sua Sintaxi Totalmente Correta e portanto Não deve e não tem o Porque de dar nenhum tipo de ERRO[/b:22d895f132]
Bem o que é certo e voce deve insistir e usar filtro ao invez do Teste IF e usar campos Agreegados em vez do While eof do , quando se quer acumular o valor de algum campo.
Boa sorte...
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)