Casas decimais no Firebird
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 !!!!
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
Curtidas 0
Respostas
Marfred
11/06/2004
sobe
GOSTEI 0
Marfred
11/06/2004
sobe...
GOSTEI 0
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´.
em vez de vc utilizar os campos númericos do tipo ´NUMERIC´ (numeric(15,2)), utilize do tipo ´DOUBLE PRECISION´.
GOSTEI 0
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+
|(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
11/06/2004
naum estendi sobre o arredondamento...
GOSTEI 0
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+
T+
GOSTEI 0
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 ?
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
11/06/2004
sobe...
GOSTEI 0
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+
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
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
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
11/06/2004
gostaria q alguem comentasse sobre esse meu problema.....
GOSTEI 0
Nigro
11/06/2004
Uso o FB 1.5, com DBX e D7, foi só apagar os domains....
GOSTEI 0
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!
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