Estouro de Campo Numerico

09/11/2009

0

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

Marcio Camilo

Responder

Posts

09/11/2009

Marcio Camilo

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
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar