Array
(
)

Arredondamento indesejável, TdbEdit, TFloatField

Domingosafn
   - 17 jan 2006

Boa tarde pessoal, tudo bem?

Tenho um campo ´valor´ TFloatField, numa TQuery. É do tipo numeric (11,2) no banco sql server. Esse campo está num TdbEdit. Quando altero ou insiro um valor no DBEdit de 60.90, por exemplo, ao sair do dbdrig, automaticamente ele decrementa para 60.89. Alguém sabe explicar o porquê?

Agradeço a ajuda.

:?


Host
   - 17 jan 2006

Eu faria dois testes, primeiro no on exit do dbedit , botaria um strtofloat(formatfloat(´#,0.0´,campo)); ou mudaria o campo para numeric(10,3) , são tentaivas validas , ñ passei por isto... espero q alguem q ja tenha passado por isto te ajude melhor!


Domingosafn
   - 19 jan 2006

strtofloat(formatfloat(´#,0.0´,campo))

Esse ´campo´ precisa ser do tipo Extented, como faço para transformar esse TFloatField em Extended? Jä tentei campo.value, .AsFloat, mas não deu certo. ...


Edilcimar
   - 19 jan 2006

extended é um tipo de variável, maior que real


Domingosafn
   - 19 jan 2006

Vocês acham que o fato de ser um campo numeric(11,2), ou seja, ímpar, pode estar causando essa ´decrementação´ indesejável?


Paulo
   - 19 jan 2006

Cara, tô com um amigo que só trabalho com SQL Server e tenho a mesma coisa. Ainda não consegui resolver isso não. Pensei eu, que fosse por causa do Paradox, já que importei os dados de uma tabela Paradox para o SQL Server, mas como apareceu com vc tbm, então percebo que pode ser outra coisa. Pois se multiplico 2 X 3,71 = 7,45 e não 7,42. Tá brabo, mas seu conseguir, te mando já assim q conseguir, ok? E se vc conseguir primeiro é só postar, que eu vou ficar acompanhando esse post


Domingosafn
   - 19 jan 2006

Edilcimar,

Você saberia porque ele poderia estar decrementando?


Anderh
   - 19 jan 2006

Também me bati com esse problema até que ´fussando´ encontrei uma solução. Não sei porque acontece essa mudança no valor, mas podes resolver clicando duas vezes sobre o componente tquery. Avai abrir um editor de fields
inclua o campo que está dando problemas e, formate como quizer no Object Inspecto. Lá podes colocar em formato Currency ou em DisplayFormat colocar uma máscara, tipo #,0.00

Acredito que isso resolverá o problema.

Sucesso!


Domingosafn
   - 20 jan 2006

anderh,

Fiz o que sugeriu: coloquei 40.20, deu certo; mas com 30.20 decrementou para 30.19. Acima de 31.20 ele não decrementa, a partir desse valor, a quantia é decrementada. Que doido .. :?

Alguma luz, por favor!

:shock:


Domingosafn
   - 20 jan 2006

anderh,

Com esse DisplayFormat, se o número for negativo, será mostrado?