Fórum Problema com decimais do Interbase no Delphi #230188

05/05/2004

0

Olá, pessoal!

Enfrentei o seguinte problema com o Delphi:

Tenho um banco de dados do Interbase 6 e uma tabela com campos numéricos que criei como NUMERIC(9,2).

O problema é que ao recuperar estes valores no Delphi através de uma Query em SQL...
. Valor : = QueryNotas.FieldByName(´preco´).Value;
. Obs.: Ao invés de .Value, também tentei AsFloat, AsVariant e
. AsCurrency sem sucesso.

...o Delphi não recupera as casas decimais, apenas a parte inteira dos valores deste campo:

Tive que aumentar o tamanho do campo para NUMERIC(10,2) para que o Delphi reconheça as casas decimais. Abaixo de (10,2) ele não recupera os valores decimais.

Alguém sabe porque isso acontece? E se existe alguma outra solução além de ampliar o tamanho dos campos?

Obrigado.


Alexandre7

Alexandre7

Responder

Posts

05/05/2004

Adeno

Cara eu não sei se é bem isso que vc esta querendo dizer, mas vamos lá
os campos tipo 990,89 com essas casas decimais são tipo arredondadas, por exemplo 56,30 ficaria 56,3 ou seja, vai desprezar uma casa... bem se for isso utilize esta função =>

Edit1.Text:=FormatFloat(´R$ #,0.00´,Fields.Fields[0].Asinteger);

Neste caso ela sempre vai retornar os floats com 2 casas decimais e um R$ na frente, eu fiz isso usando dbExpress


Responder

Gostei + 0

06/05/2004

Alexandre7

Não é bem isso não Adeno. O que aconteceu é que no banco de dados Interbase 6 eu tenho um valor de 90,56 em um campo que criei como NUMERIC(9,2), mas, quando vou somá-lo com o valor 100,00 de outro campo, o resultado é 190,00 e não 190,56 como deveria.
O Delphi sequer está arredondando, está simplesmente ignorando o valor decimal 0,56.
Eu acho que é um problema no Delphi (utilizo o 6), pois, quando consulto o banco de dados pelo IBExpert, o valor aparece certo (90,56).
Só consegui resolver o problema quando aumentei o tamanho do campo para NUMERIC(10,2), então o Delphi passou a somar corretamente e exibir o resultado 190,56.
Gostaria apenas de saber o porque disso e se a única solução é realmente utilizar tamanhos acima de 9 para a parte inteira do campo, ou seja, acima de NUMERIC(9,2).


Responder

Gostei + 0

07/05/2004

Alexandre7

...


Responder

Gostei + 0

07/05/2004

Alexandre7

sobe


Responder

Gostei + 0

07/05/2004

Fer_nanda

Oi Alexandre, não sei porque isso ocorre, na verdade nunca passei por essa situação. Mas vc jah tenou definir seu campo do tipo float? Provavelmente isso não ocorra.


Responder

Gostei + 0

07/05/2004

Rogerio_amorim

Vc poderia criar como DOUBLE PRECISION, geralmente é o que eu uso





Rogério Amorim


Responder

Gostei + 0

07/05/2004

Aroldo Zanela

Colega,

Você está utilizando BDE e dialeto 3? Se sim, basta mudar de componentes de acesso aos dados, como: IBX, ADO, DBX, Zeos, etc.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar