[firebase-br] Valores Monetários

Pha lista em pha.com.br
Sex Jun 30 09:17:58 -03 2006


Geralmente isso ocorre quando um campo é alterado de Float para Numeric e
não é feito um Backup e Restore, ou se voce estiver utilizando o dialeto 1
em vez de 3.

Posso estar enganado, mais somente nestes casos que isso ocorre, pois no
demais casos o valor é armazenda no banco como Inteiro ou Inteiro 64, o
qual não gera diferença.

O problema também pode estar no componete usado no cliente quando ele
converte de Int64 para float.

Paulo Henrique Albanez
VirtualSystem Informática Ltda
Nova Odessa / SP - Brazil
Membro do TeamFB (FireBase)

> 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
>>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>






Mais detalhes sobre a lista de discussão lista