[firebase-br] RES: Arredondamento em procedure FireBird.

Flavio Pereira flavio em c2sistemas.com.br
Seg Fev 29 21:58:45 -03 2016


Creio que não pois todos os calculos já estão na procedure?, o controle só
exibi o resultado.

Em 29 de fevereiro de 2016 13:18, Washington Moratti de Oliveira <
ti em cbnmodas.com.br> escreveu:

> Mas ele já está usando
> >      PARTICIPACAO = ROUND((:VALOR_PREMIO / :VLN_TOTAL) * 100, 2);
>
> Talvez pelo campo ser tipo float ele deve ser armazenado dessa forma,
> Ao ser exibido em algum controle (Edit, dbgrig etc) é que deve ser tratado
> o
> arredondamento, correto ?
>
> Washington Moratti
> Encarregado de T.I
> (27) 3 722 9900
> Cel.:9994 325 79
> Skype: cpd.ravely
>
> -----Mensagem original-----
> De: lista [mailto:lista-bounces em firebase.com.br] Em nome de Itauto CPD
> Enviada em: segunda-feira, 29 de fevereiro de 2016 12:47
> Para: FireBase
> Assunto: Re: [firebase-br] Arredondamento em procedure FireBird.
>
> use o round(CAMPO, 2)
>
> On 2 seria o numero de casas decimais .
>
> Em 27/02/2016 10:00, Flavio Pereira escreveu:
> > Bom dia Pessoal!
> >
> > Estou fazendo uma procedure no banco usando o ibexpert segue abaixo a
> mesma:
> >
> > CREATE OR ALTER PROCEDURE SP_COMP_FINANCEIRO_SEGURADORA (
> >      VPI_PRODUTO INTEGER,
> >      VPI_PRODUTOR INTEGER,
> >      VPI_SEGURADORA INTEGER,
> >      VPI_SITUACAO CHAR(1),
> >      VPI_ORDEM INTEGER,
> >      VPS_DT_INICIAL VARCHAR(10),
> >      VPS_DT_FINAL VARCHAR(10))
> > RETURNS (
> >      NOME VARCHAR(35),
> >      VALOR_PREMIO NUMERIC(15,2),
> >      PARTICIPACAO NUMERIC(15,2),
> >      VALOR_TOTAL NUMERIC(15,2),
> >      COMISSAO_PAGA NUMERIC(15,2),
> >      MEDIA_COMISSAO NUMERIC(15,2),
> >      QTD INTEGER)
> > AS
> > DECLARE VARIABLE VLN_TOTAL NUMERIC(15,2) = 0; BEGIN
> >    /* PROCEDURE TEXT */
> >    SELECT SUM(T.SEGS_VALOR_PREMIO_LIQUIDO) AS TOTAL
> >      FROM CADCLI T
> >     WHERE T.CADCLI_SITUACAO = :VPI_SITUACAO
> >       AND (T.PRODUTO    = :VPI_PRODUTO    OR :VPI_PRODUTO    = -1)
> >       AND (T.PRODUTOR   = :VPI_PRODUTOR   OR :VPI_PRODUTOR   = -1)
> >       AND (T.SEGURADORA = :VPI_SEGURADORA OR :VPI_SEGURADORA = -1)
> >       AND T.CADASTRO BETWEEN (:VPS_DT_INICIAL) AND (:VPS_DT_FINAL)
> >      INTO :VLN_TOTAL;
> >
> >    FOR
> >      SELECT S.NOME, SUM(C.SEGS_VALOR_PREMIO_LIQUIDO) AS VALOR,
> >             SUM(C.SOBRA) AS COMISSAO_PAGA,
> > (SUM(C.SOBRA)/SUM(C.SEGS_VALOR_PREMIO_LIQUIDO)*100) AS MEDIA_COMISSAO,
> >             COUNT(C.CODIGO) AS QTD
> >        FROM CADCLI C
> >             LEFT JOIN SEGURADORA S ON (C.SEGURADORA = S.CODIGO)
> > --           LEFT JOIN PRODUTOR   P ON (C.PRODUTOR   = P.CODIGO)
> >       WHERE C.CADCLI_SITUACAO = :VPI_SITUACAO
> >         AND (C.PRODUTO    = :VPI_PRODUTO    OR :VPI_PRODUTO    = -1)
> >         AND (C.PRODUTOR   = :VPI_PRODUTOR   OR :VPI_PRODUTOR   = -1)
> >         AND (C.SEGURADORA = :VPI_SEGURADORA OR :VPI_SEGURADORA = -1)
> >         AND C.CADASTRO BETWEEN (:VPS_DT_INICIAL) AND (:VPS_DT_FINAL)
> >       GROUP BY S.NOME
> >       ORDER BY :VPI_ORDEM DESC
> >        INTO :NOME, :VALOR_PREMIO, :COMISSAO_PAGA, :MEDIA_COMISSAO, :QTD
> >    DO BEGIN
> >      PARTICIPACAO = ROUND((:VALOR_PREMIO / :VLN_TOTAL) * 100, 2);
> >      VALOR_TOTAL  = :VLN_TOTAL;
> >      SUSPEND;
> >    END
> > END
> >
> > Pois bem!, minha dúvida é o seguinte onde esta o calculo de
> > participação resulta no seguinte valor
> >
> > (31861,05 / 328.487,81) * 100 = 9,699309694323208
> >
> > Gostaria de saber como faço para fazer o arredondamento do tipo, que
> > quando a parti da terceira casa decimal se o valor da terceira casa
> > for igual ou maior que 5 arredonde para cima e for menor que 5 arredonde
> para baixo.
> >
> > Nesse exemplo acima seria para arredondar para o valor de 9,70.
> >
>
>
> ---
> Este email foi escaneado pelo Avast antivírus.
> https://www.avast.com/antivirus
>
>
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>
>
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>



-- 
Atenciosamente,



Mais detalhes sobre a lista de discussão lista