meze_PP 0 Denunciar post Postado Novembro 27, 2007 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
marcio.theis 3 Denunciar post Postado Novembro 28, 2007 Precisava verificar se é o FB ou o Zeos que faz isto... Faz um teste usando ADO ou BDE para ver se ocorre o mesmo... Compartilhar este post Link para o post Compartilhar em outros sites
meze_PP 0 Denunciar post Postado Novembro 28, 2007 É 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.theis 3 Denunciar post Postado Novembro 29, 2007 Mas se rodar o script ele vai mudar o tipo dos campos, para o seu aplicativo isto não vai influenciar, visto que se usar máscaras nos campos, o sistema mesmo vai formatar... Compartilhar este post Link para o post Compartilhar em outros sites
meze_PP 0 Denunciar post Postado Novembro 29, 2007 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