[firebase-br] Arredondamento de valores.

Rubens J Rodrigues rubens.rodrigues em abrevo.com.br
Qua Set 5 08:17:07 -03 2007


Pessoal,

Numa de minhas rotinas, estou com problemas de valores que são 
arredondados pelo Firebird automáticamente, na verdade isto não deveria 
acontecer uma vez que não solicitei e nem pretendia. Segue o cenário :

SISTEMA OPERACIONAL: WINXP SP2
SISTEMA SGDB : FIREBIRD 2.0 SUPERSERVER
SISTEMA DESENVOLV. : DELPHI 6 WITH IBO
MEMORIA EM USO : 1 GB
PAGINACAO DO FIREBIRD : 8096
============================================================


TABELA "FORMAPAGTO"
SEQ INTEGER
DESCRICAO VARCHAR(40)
TXADM NUMERIC(9,2) ---> AQUI INFORMO A TX ADMINISTRATIVA SE A VISTA = 0
...



TABELA "VENDAETIQUETAS"
SEQ INTEGER
CODFORMAPAGTO INTEGER
TOTAL NUMERIC(18,3)
...


TABELA "VENDAETIQUETASITENS"
SEQ INTEGER
CODVENDA
CODETIQUETA -----> APONTANDO PARA UMA TABELA DE ETIQUETA
QTDE INTEGER
VALORUNITARIO NUMERIC(18,3)
...


TRIGGER ----->VENDAETIQUETAITENS
AFTER UPDATE/INSERT POSITION 0

DECLARE VARIABLE  VTXADM NUMERIC(9,2);
DECLARE VARIABLE  VTOTAL NUMERIC(9,2);

-- AQUI PEGO A SOMA DOS VALOR DOS ITENS DA TABELA
SELECT COALESCE(SUM(QTDE * VALORUNITARIO),0) FROM VENDAETIQUETAS ITENS 
WHERE CODVENDA=NEW.CODVENDA INTO VTOTAL;

-- AQUI PEGO A TX ADM DA FORMA DE PAGTO
SELECT COALESCE(TXADM,0) FROM FORMAPAGTO WHERE SEQ=XXXXX INTO VTXADM;


-- AGORA EU CALCULO O TOTAL X TX ADM
VTOTAL=VTOTAL * (1 + (VTXADM/100));
.........



CENÁRIO MONTADO E COM VALORES :
============================================================

VTOTAL = 1.99
VTXADM = 0

VTOTAL= 1.99 * (1+(0/100))
VTOTAL= 1.99 * (1 + 0)
VTOTAL= 1.99 * 1
==>  DEVERIA SER VTOTAL=1.99
==>  O SISTEMA COLOCA 2.01



DUVIDAS :
============================================================
ONDE PODE ESTAR O PROBLEMA?


Desde já agradeço,

att



Rubens












Mais detalhes sobre a lista de discussão lista