Re: [firebase-br] Valores Monetários

Pedro news.pj em gmail.com
Qui Jun 29 14:32:41 -03 2006


Recentemente vi algo parecido. Usavam Numeric(15,2) para armazenar valores
monetários e o firebird também armazenava essa loucura cheia de dígitos. Era
esperado que armazenasse somente as duas casas decimais, mas não era o que
ocorria em alguns casos. Na tabela tinha um campo que era guardado já
calculado. "Campo A" X "Campo B" = "Campo C". Só que esse cálculo era feito
na aplicação e o resultado era arredondado para duas casas decimais e assim
passado para ser armazenado no "Campo C". Só que o firebird guardava a
maluquice dele como queria, e não como era passado. Quando listamos os três
campos adicionando mais um calculado "na hora" via SQL e levamos para o
excel, pecebemos uma diferença entre o calculado e o "campo C". Guardavamos
2 dígitos decimais e a diferença começava na quarta, quinta casa... Aliás,
que nem deveriam aparecer! Muito menos influenciar...

Enfim... Futucar a aplicação julgamos que não resolveria, já que o problema
era no banco. Então solucionamos com uma trigger para "before insert" da
tabela em questão, que calculava o bendito "Campo C". O firebird mesmo
calculava o valor que desejaria armazenar. Para a aplicação ficava
transparente, pq na carga dos dados ela forçava arredondar pra duas casas. E
assim foi... Com a trigger, pelo menos a diferença que o excel mostrava
sumiu. Entretanto o firebird continuou armazenando loucuras, pelo menos mais
sensatas, hehehehe... Acredito, ou pelo menos prefiro acreditar, que este
deve ser um problema a ser corrigido nas próximas versões do firebird pq é
algo que realmente enche o saco.

At,
Pedro.

Em 28/06/06, Fernando Lepore <sistema em spimarcas.com.br> escreveu:
>
> Ok.
>
> Se eu converter um campo de FLOAT para NUMERIC(18, 2), será que haverá a
> correção do problema?
>
> Ou seja, um valor FLOAT está armazenado como 23666,048828125 mas deveria
> estar como 23666,05. Ao ser feita a conversão do tipo de dado o valor será
> convertido para o correto? Bom, acho que só testando para ver... Vou fazer
> a
> conversão e informo o resultado.
>
> Grato,
> Fernando
>



Mais detalhes sobre a lista de discussão lista