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

andre conrado acf.andre em gmail.com
Qui Fev 24 14:32:51 -03 2011


Humberto, minha primeira impressão:

vc mudou os campos para o tipo NUMERIC(14,2) e no seu SELECT o CAST
está como NUMERIC(14,2), isto é, um digito a menos. Talvez seja isso.

abraços,
André Conrado.

2011/2/23, Humberto S. Reis <hsreisjr em gmail.com>:
> 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
> ______________________________________________
> 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
>


-- 
Um Abraço,
André Conrado.

055 21 9176-7013 - Claro
055 21 9896-5449 - Vivo (apenas mensagens SMS)




Mais detalhes sobre a lista de discussão lista