Condição para fazer contas com ClientDataSet
Galera tô com um probleminha tenho esse código
Só que está dando um erro na linha:if not dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´ then begin
Erro:
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.
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
Curtidas 0
Respostas
Jpauloss
12/10/2007
Galera só consertando, se:
if not dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´
então
dm.cdsChequesVALOR.AsFloat --> não quero que entre para calculo.
if not dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´
então
dm.cdsChequesVALOR.AsFloat --> não quero que entre para calculo.
GOSTEI 0
Marco Salles
12/10/2007
Com voce esta trabalhando com ClientDataSet acho que um Simples Filtro
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
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
Jpauloss
12/10/2007
[quote:f11d860b7b=´Marco Salles´]Com voce esta trabalhando com ClientDataSet acho que um Simples Filtro
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
[/quote:f11d860b7b]
Fiz assim como você colocou mais num ta dando certo, então fiz assim:
Resumindo se for SIM então o ClientDataSetVALOR seu valor vai ser zero.
Mas ta dando esse erro na linha
O erro
Que faço?
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
Marco Salles
12/10/2007
Amigo , estamos perdendo o foco da discussão... :cry: :cry:
[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]
[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...
[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
if not (dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´) then begin
[b:22d895f132](dm.cdsChequesVALOR.AsString=´0´)[/b:22d895f132]
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
Mas ta dando esse erro na linha Código:
[b:22d895f132]While not dm.cdsCheques.eof do[/b:22d895f132]
[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
if not (dm.cdsChequesCHEQUE_PAGO.AsString=´SIM´) then begin
[b:22d895f132](dm.cdsChequesVALOR.AsString=´0´)[/b:22d895f132]
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
Mas ta dando esse erro na linha Código:
[b:22d895f132]While not dm.cdsCheques.eof do[/b:22d895f132]
[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