[firebase-br] [Firebase-Br] Problema de arithmetic overflow em select

Humberto S. Reis hsreisjr em gmail.com
Qua Fev 23 14:15:06 -03 2011


visualizando a view no ibexpert dá o mesmo erro....

Em 23 de fevereiro de 2011 14:04, Reijanio Nunes Ribeiro <
rnribeiro em gmail.com> escreveu:

> 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
> >
> ______________________________________________
> 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
>



-- 
Humberto S. Reis



Mais detalhes sobre a lista de discussão lista