[firebase-br] [Firebase-Br] Problema de arithmetic overflow em select
Reijanio Nunes Ribeiro
rnribeiro em gmail.com
Qua Fev 23 14:04:04 -03 2011
esse erro é no proprio banco de dados ou acontece no front-end
2011/2/23 Humberto S. Reis <hsreisjr em gmail.com>
> Pessoal bom dia
>
> Mudei os tipos de campos da tabela abaixo de:
>
> CREATE TABLE ITEMMOVIMENTACAOPRODUTO (
> COD_MOVIMENTACAO DM_CODIGO NOT NULL /* DM_CODIGO = INTEGER
> DEFAULT 0 NOT NULL */,
> TIPOMOVIMENTACAO DM_CHAR01 NOT NULL /* DM_CHAR01 = CHAR(1) */,
> CODIGO DM_CODIGO NOT NULL /* DM_CODIGO = INTEGER
> DEFAULT 0 NOT NULL */,
> VALORUNITARIO DM_MOEDA5 DEFAULT 0 NOT NULL /* DM_MOEDA5 =
> NUMERIC(15,5) DEFAULT 0 NOT NULL */,
> QUANTIDADE T_CURRENCY DEFAULT 0 NOT NULL /* T_CURRENCY =
> NUMERIC(18,4) DEFAULT 0 NOT NULL */,
> VALORITEM DM_MOEDA /* DM_MOEDA = NUMERIC(15,2) DEFAULT 0
> NOT NULL */,
> TIPODESCONTO DM_CHAR01 /* DM_CHAR01 = CHAR(1) */,
> VALORRATEIO DM_ZERO DEFAULT 0 NOT NULL /* DM_ZERO = DOUBLE
> PRECISION DEFAULT 0 NOT NULL */,
> VALORRATEIO_FRETE DM_ZERO /* DM_ZERO = DOUBLE PRECISION DEFAULT 0
> NOT NULL */,
> VALORRATEIO_SEGURO DM_MOEDA /* DM_MOEDA = NUMERIC(15,2) DEFAULT 0
> NOT NULL */,
> SALDOANTERIOR DM_ZERO DEFAULT 0 /* DM_ZERO = DOUBLE PRECISION
> DEFAULT 0 NOT NULL */,
> VALORDESCONTO T_CURRENCY DEFAULT 0 NOT NULL /* T_CURRENCY =
> NUMERIC(18,4) DEFAULT 0 NOT NULL */,
> VALORCUSTO T_CURRENCY DEFAULT 0 /* T_CURRENCY =
> NUMERIC(18,4) DEFAULT 0 NOT NULL */,
> VALORICMSSUBSTITUIDO T_CURRENCY /* T_CURRENCY = NUMERIC(18,4)
> DEFAULT 0 NOT NULL */,
> VALORDESPAC DM_MOEDA /* DM_MOEDA = NUMERIC(15,2) DEFAULT 0
> NOT NULL */);
>
> Para:
>
> CREATE TABLE ITEMMOVIMENTACAOPRODUTO (
> COD_MOVIMENTACAO DM_CODIGO NOT NULL /* DM_CODIGO = INTEGER
> DEFAULT 0 NOT NULL */,
> TIPOMOVIMENTACAO DM_CHAR01 NOT NULL /* DM_CHAR01 = CHAR(1) */,
> CODIGO DM_CODIGO NOT NULL /* DM_CODIGO = INTEGER
> DEFAULT 0 NOT NULL */,
> VALORUNITARIO DM_MOEDA5 DEFAULT 0 NOT NULL /* DM_MOEDA5 =
> NUMERIC(15,5) DEFAULT 0 NOT NULL */,
> QUANTIDADE T_CURRENCY DEFAULT 0 NOT NULL /* T_CURRENCY =
> NUMERIC(18,4) DEFAULT 0 NOT NULL */,
> VALORITEM DM_MOEDA /* DM_MOEDA = NUMERIC(15,2) DEFAULT 0
> NOT NULL */,
> TIPODESCONTO DM_CHAR01 /* DM_CHAR01 = CHAR(1) */,
> VALORRATEIO DM_MOEDA DEFAULT 0 NOT NULL /* DM_MOEDA =
> NUMERIC(15,2) DEFAULT 0 NOT NULL */, <<<<Mudança>>>>
> VALORRATEIO_FRETE DM_MOEDA /* DM_MOEDA = NUMERIC(15,2) DEFAULT 0
> NOT NULL */, <<<<Mudança>>>>
> VALORRATEIO_SEGURO DM_MOEDA /* DM_MOEDA = NUMERIC(15,2) DEFAULT 0
> NOT NULL */,
> SALDOANTERIOR DM_ZERO DEFAULT 0 /* DM_ZERO = DOUBLE PRECISION
> DEFAULT 0 NOT NULL */,
> VALORDESCONTO T_CURRENCY DEFAULT 0 NOT NULL /* T_CURRENCY =
> NUMERIC(18,4) DEFAULT 0 NOT NULL */,
> VALORCUSTO T_CURRENCY DEFAULT 0 /* T_CURRENCY =
> NUMERIC(18,4) DEFAULT 0 NOT NULL */,
> VALORICMSSUBSTITUIDO T_CURRENCY /* T_CURRENCY = NUMERIC(18,4)
> DEFAULT 0 NOT NULL */,
> VALORDESPAC DM_MOEDA /* DM_MOEDA = NUMERIC(15,2) DEFAULT 0
> NOT NULL */);
>
>
> Depois disso, o cálculo da MARGEM, no select abaixo, está dando erro de
> arithmetic overflow or string truncation
>
> select /*MARGEM*/
> cast((((IMP.VALORUNITARIO-IMP.VALORDESCONTO) * IMP.QUANTIDADE)+
> IMP.VALORRATEIO+
> IMP.VALORRATEIO_FRETE+
> IMP.VALORRATEIO_SEGURO+
> IMP.VALORICMSSUBSTITUIDO) -
> (IMP.QUANTIDADE * IMP.VALORCUSTO) /
> (((IMP.VALORUNITARIO-IMP.VALORDESCONTO) * IMP.QUANTIDADE)+
> IMP.VALORRATEIO+
> IMP.VALORRATEIO_FRETE+
> IMP.VALORRATEIO_SEGURO+
> IMP.VALORICMSSUBSTITUIDO)
> as numeric(14,2))
> from MOVIMENTACAO M
> join TIPOMOVIMENTACAO TP on (TP.CODIGO = M.COD_TIPOMOVIMENTACAO)
> join ITEMMOVIMENTACAOPRODUTO IMP on (M.CODIGO = IMP.COD_MOVIMENTACAO and
> M.TIPO = IMP.TIPOMOVIMENTACAO)
> where (M.STATUS = 'F' ) and (TP.OPERACAO = 'VD')
>
> A pergunta é: Como resolver isso
>
> Desde já agradeço a valorosa colaboração.
>
> Humberto S.
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista