Fórum Erro com o tipo numeric #42435
17/02/2004
0
Utilizo o Delphi7, banco de dados Firebird 1.5 e Ibo .
Criei minhas tabelas através do IbExpert, para certa tabela de notas criei um domain chamado Nota com o seguinte tipo Numeric size = 3, scale = 2, pois meu campo devera guardar valores entre 0 e 999,99.
Mas quando tento inserir valores maiores que 327,00 o erro abaixo é mostrado no IbExpert (valores => 328,00)
----
Incompatible column/host variable data type
Dynamic SQL error.
Sql error code = -303
Arithmetic exception, numeric overflow, or string truncation
----
Tentei tb fazer a migração de Paradox para FireBird utilizando o IBPump mas como tenho valores acima de 327 na tabela paradox a migração apresenta problemas
Minha pergunta e a seguinte, para o Domain criado (Numeric size = 3, scale = 2) o banco não deveria aceitar valores até 999,99...
Criei minhas tabelas através do IbExpert, para certa tabela de notas criei um domain chamado Nota com o seguinte tipo Numeric size = 3, scale = 2, pois meu campo devera guardar valores entre 0 e 999,99.
Mas quando tento inserir valores maiores que 327,00 o erro abaixo é mostrado no IbExpert (valores => 328,00)
----
Incompatible column/host variable data type
Dynamic SQL error.
Sql error code = -303
Arithmetic exception, numeric overflow, or string truncation
----
Tentei tb fazer a migração de Paradox para FireBird utilizando o IBPump mas como tenho valores acima de 327 na tabela paradox a migração apresenta problemas
Minha pergunta e a seguinte, para o Domain criado (Numeric size = 3, scale = 2) o banco não deveria aceitar valores até 999,99...
Delmar
Curtir tópico
+ 0
Responder
Posts
17/02/2004
Afarias
|criei um domain chamado Nota com o seguinte tipo Numeric size = 3,
|scale = 2, pois meu campo devera guardar valores entre 0 e 999,99.
Então o SIZE deveria ser 5 :: NUMERIC(5,2)
|Minha pergunta e a seguinte, para o Domain criado (Numeric size = 3,
|scale = 2) o banco não deveria aceitar valores até 999,99...
Não -- NUMERIC(3,2) define números até 9,99
Ai vc se pergunta:: então pq o banco aceita valores até 327,00 ??
Bom, na verdade, ele aceita valores até 327,67 -- pq na realidade, internamente o valor está armazenado em um INTEIRO de 16bits (a menor representação numérica existente no IB) cujo valor máximo q pode representar é 32.767 -- como vc definiu 2 casas decimais, este valor sempre é dividido por 100 --> 327,67
T+
|scale = 2, pois meu campo devera guardar valores entre 0 e 999,99.
Então o SIZE deveria ser 5 :: NUMERIC(5,2)
|Minha pergunta e a seguinte, para o Domain criado (Numeric size = 3,
|scale = 2) o banco não deveria aceitar valores até 999,99...
Não -- NUMERIC(3,2) define números até 9,99
Ai vc se pergunta:: então pq o banco aceita valores até 327,00 ??
Bom, na verdade, ele aceita valores até 327,67 -- pq na realidade, internamente o valor está armazenado em um INTEIRO de 16bits (a menor representação numérica existente no IB) cujo valor máximo q pode representar é 32.767 -- como vc definiu 2 casas decimais, este valor sempre é dividido por 100 --> 327,67
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)