Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

meze_PP

O firebird esta arredondando.

Recommended Posts

Amigos.

 

Estou com um problemão.

O firebird esta arredondando o valor de 2.092.377,540 para 2.092.377,500.

Meu software está distribuido para vários clientes e todos usam o bd firebird e os campos numericos são do tipo float.

Eu precisaria resolver isto com o float, será que é possível?

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É o firebird que faz isto.

 

Eu achei uma rotina que altera todos os campos floats de um fdb ou gdb para numeric 9,2.

UPDATE RDB$FIELDS

SET RDB$FIELD_TYPE = 8,

RDB$FIELD_SCALE = -2

WHERE RDB$FIELD_NAME IN ( SELECT RDB$RELATION_FIELDS.RDB$FIELD_SOURCE

FROM RDB$RELATION_FIELDS, RDB$FIELDS

WHERE (RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME)

AND (RDB$FIELDS.RDB$FIELD_TYPE = 10 )

AND (RDB$FIELDS.RDB$SYSTEM_FLAG <> 1 ) )

 

Mas eu não queria alterar tudo, pois terei que mudar todo o programa.

Alguém sabe como alterar este código para alterar somente um campos float para numeric 15,2?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio, você tem razão, o melhor é alterar tudo de uma vez só, e mudar todos os campos do delphi de float para numeric mesmo, vou ter um trabalho agora, mas não esquento a cabeça no futuro com isto mais.

 

Você saberia como mudar esta rotina para transformar os campos float para numeric 15,2 e não numeric 9,2 como está agora?

 

UPDATE RDB$FIELDS

SET RDB$FIELD_TYPE = 8,

RDB$FIELD_SCALE = -2

WHERE RDB$FIELD_NAME IN ( SELECT RDB$RELATION_FIELDS.RDB$FIELD_SOURCE

FROM RDB$RELATION_FIELDS, RDB$FIELDS

WHERE (RDB$RELATION_FIELDS.RDB$FIELD_SOURCE = RDB$FIELDS.RDB$FIELD_NAME)

AND (RDB$FIELDS.RDB$FIELD_TYPE = 10 )

AND (RDB$FIELDS.RDB$SYSTEM_FLAG <> 1 ) )

 

 

Outra pergunta, será que se eu alterar tudo para 3 casas decimais vou ter problema nos valores que são com 2 casas decimais, eu digo isto pois dentro da base de dados, tem muitos campos que utilizam 3 casas decimais e estão como float, e seu eu alterar para numeric 9,2 ele vai perder o valor da 3 casa decimal, e isto não pode acontecer.

 

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.