Array
(
)

Estouro de Campo Numerico

Marcio Camilo
   - 09 nov 2009

Boa tarde pessoal.

A questão é a seguinte, alguns dias atrás estava com problemas de comparação de valores entre dois campos, postei no forum a questão e, de um certo modo, ficou resolvida, porém com a mudança veio outro cenário.

Fiz alteração dos campos (utilizo postgre) (Tabela de Produtos) de Double Precision para Numeric em alguns casos, 7,2(vlrVenda) outros 7,4(vlrUnitário por exemplo), (nesse caso pq segundo Layout da NFe vlrUnitario tem que possuir 4 casas decimais). As comparações entre valores funcionaram perfeitamente, porem, quando ia gravar as informações no Banco esta ocorrendo o erro:

SQL Error: Estouro de campo numeric, DETAIL, um campo com precisão 4, escala 2 deve arredondar para um valor absoluto menor do que ....

Fiz algumas pesquisas e diversas alterações porém ainda sem sucesso, inclusive estou utilizando SimpleRoundTo(vlrUnitario.value,-4) pra forçar o arredondamento para 4 casas decimais de acordo com a precisão estabelecida para este campo e mesmo assim continua o erro.

A linha de gravação é a seguinte:

Código:
Params.ParamByName('vlrUnitario').AsCurrency := SimpleRoundTo(crPrCusto.Value,-4);


Alguem tem alguma dica sobre a melhor forma para se resolver a questao.

Att.

Marcio M. Camilo

Marcio Camilo
   - 09 nov 2009

Ae Pessoal, acabei resolvendo aqui.

E para comentar sobre esse erro, acabei entendendo que na verdade, outro campo: (Desconto,4,2) eu havia definido o tamanho total do campo erroneamente e o correto é (Desconto,7,2) então o erro em questão não se aplica as casas decimais e sim ao tamanho total do campo, incluindo os inteiros, virgula e casas decimais. Ex.: 1000,00 = 7,2 ou 1252325,1476 = 12,4.

Desde já agradeço.

Márcio M. Camilo