Fórum Mudança em dialeto, comando SQL não funicona #52759
13/09/2005
0
A um tempo atras resolvi migrar um banco criado com IBX / Firebird 1.0(dialeto 1) para o Firebird 1.5,
tornando-o em dialeto 3. O problema é que este cód simples q me retornava o valor com desconto dado
(VALORUNITF) no dialeto 3 me devolve o mesmo valor de I.VALOR_BRUTO sem cacular os descontos.
SELECT
I.NUM_PEDIDO,I.QTD_PEDIDO,I.VALOR_BRUTO,I.QTD_NF,
I.descricao1,I.DESCONTO11,I.DESCONTO12,I.DESCONTO13,
I.DESCONTO14,I.DESCONTO15,I.DESCONTO16,
I.VALOR_BRUTO*(1-I.DESCONTO11/100)*
(1-I.DESCONTO12/100)*(1-I.DESCONTO13/100)*
(1-I.DESCONTO14/100)*(1-I.DESCONTO15/100)*
(1-I.DESCONTO16/100) AS VALORUNITNF
FROM
PEDIDOSITENS I
where
I.num_pedido =:num_pedido
Aqui esta o código alguem pode me ajudar, procurei algum problema semelhante mas nunca encontrei e ja faz um tempo que estou com esse problema...
Obrigado
Neves777
Curtir tópico
+ 0Posts
13/09/2005
_rodfaria_
Tive um problema semelhante no Firebird e assim funcionou.
Rod.
Gostei + 0
13/09/2005
Neves777
Troquei 100 por 100.0 e deu certo, o numero ficou extenso sem tratamento, mas com o delphi coloco uma mascara. Muito estranhas essas mudanças que ocorrem nas atualizacoes do FIREBIRD, vc conseguiu axar essa solucao no manual do FB?
No mais mto obrigado !
Gostei + 0
13/09/2005
_rodfaria_
Use breakpoints, arquivos de log, watches e demais recursos oferecidos pelo Delphi para inspecionar seu código.
Foi assim que achei o problema de arredondamento.
Rod.
Gostei + 0
13/09/2005
Afarias
isso é a lógica de cálculos do IB/FB, quando vc divide 2 inteiros a divisão é nos inteiros (mesmo q usar DIV no Delphi) -- isso era assim no IB e continua assim até hoje.
quando vc faz: I.DESCONTO11/100.0 está dizendo pro Fb que a divisão deve ser feita nos REAIS (100 é inteiro, 100.0 é real)
Creio q o ´problema´ ai foi a troca do DIALETO, já q existem diversas alterações de tipo ao se mexer no dialeto do banco.
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)