Casas decimais no Firebird

Firebird

11/06/2004

Fala ae moçada !!

Migrei pracialmente meu programa de paradox para firebird, e estou tendo problemas com os campos numericos...

deifini na tabela numeric(15,2) mas ele naum grava so com 2 casa decimais !!! e isso dah pau em arredondamentos de notas fiscais.... quantidade x valor do produto...

Entenderam ?!!

como resolvo esse problema ?!!

uso query1.campo.value


Falow !!!!


Marfred

Marfred

Curtidas 0

Respostas

Marfred

Marfred

11/06/2004

sobe


GOSTEI 0
Marfred

Marfred

11/06/2004

sobe...


GOSTEI 0
Christian_adriano

Christian_adriano

11/06/2004

Olá,

em vez de vc utilizar os campos númericos do tipo ´NUMERIC´ (numeric(15,2)), utilize do tipo ´DOUBLE PRECISION´.


GOSTEI 0
Afarias

Afarias

11/06/2004

|em vez de vc utilizar os campos númericos do tipo ´NUMERIC´ (numeric
|(15,2)), utilize do tipo ´DOUBLE PRECISION´.

NÃO FAÇA ISSO MESMO!

Quando se usa NUMERIC vc dá chance ao banco de escolher o melhor TIPO de dados para guardar os valores numéricos. Enquanto DOUBLE é reconhecidamente um péssimo formato para valores monetários por ter baixa ´precisão´.

Quanto o arrendondamento o banco não pode fazer por vc pois seria arbritária! VC que deve no seu programa, arredondar ou truncar como achar melhor (ou mesmo usar uma UDF no banco para isso)



T+


GOSTEI 0
Marfred

Marfred

11/06/2004

naum estendi sobre o arredondamento...


GOSTEI 0
Afarias

Afarias

11/06/2004

Qual exatamente o problema q vc está passando e qual a versão do FB... acho q eu entendi errado.


T+


GOSTEI 0
Marfred

Marfred

11/06/2004

Uso Firebird 1.5 Final com Zeos....

meu problema é que os valores de currency ele grava como inteiro na tabela do banco.....

Ex: 4,96 ele grava 4....


eu uso um componente da rxlib.... currencyedit, sera q é isso q naum tah dando certo ? daí eu atribuo o valor do edit ao campo...

assim: query1campo1.asscurrency:=currencyedit1.value.....

deve ser isso pois se eu fiz teste de insercao com sql e ele grava normal.... qual a solucao ?


GOSTEI 0
Marfred

Marfred

11/06/2004

sobe...


GOSTEI 0
Afarias

Afarias

11/06/2004

Seu problema deve estar no seu código ou nos componentes de acesso q usa (Zeos no caso)!

AsCurrency está perfeito! É a melhor opção no caso!

DecimalSeparator pode ser definido por vc. inicialmente é carregado com o q está configurado no Windows. A princípio não acho q seja seu problema, mas ... se estiver como ´.´ terá de informar os valores na forma ´2.35´ por exemplo (nos edits)



T+


GOSTEI 0
Marfred

Marfred

11/06/2004

Kra.... acho q o zeos deve ter algum bug.... (naum sei)

Acho q descobri o erro....

Eu tinha um dominio criado como numeric(15,2) e nos campos da tabela eu indicava os dominios, daí percebi q um campo q eu tinha como numeric(15,6) sem dominio tava dando certo....

Daí eu tirei o dominio dos campos e joguei como numeric(15,2), daí deu CERTO !!!!

ACREDITAM ?!!!

Se tem alguma coisa a ver eu naum sei, mas q foi isso q resolveu meu problema, porém... naum uso mais domínios será ???

Alguem jah teve esse problema com o ZEOS ?!

Aceito comentários..... rsss


GOSTEI 0
Marfred

Marfred

11/06/2004

gostaria q alguem comentasse sobre esse meu problema.....


GOSTEI 0
Nigro

Nigro

11/06/2004

Uso o FB 1.5, com DBX e D7, foi só apagar os domains....


GOSTEI 0
Letb

Letb

11/06/2004

Eu usava o FB 1.5 com ADO e IBFree, funcionava normal. Passei a usar o Zeos 6.1.5 e tive o mesmo problema. Usando o mesmo Zeos com MS-SQL não tinha qualquer problema.

Fiz o que vc sugeriu e resolveu também, mas no meu caso tive que pedir para criar um novo domínio, dai ficou new_domain, mas funcionou.

Vlw pela dica!


GOSTEI 0
POSTAR