Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde,
Estou com um problema que não estou conseguindo identificar o porque acontece.
Tenho o código abaixo:
[Estornos]:
LOAD [Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária] as [ChaveEstornoFiltro]
FROM
Where [Cod. Tipo Movimentação Bancária] = 'ES';
Tabela:
LOAD
*
FROM
Where
Not Exists ([ChaveEstornoFiltro],[Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária]);
Drop Table Estornos;
A ideia deste código é pegar todos os estornos e depois excluir da Tabela quem tem essa Chave (que possui estorno).
Ao rodar apenas esta parte do código, tudo funciona.
E depois tenho um código que pega e cria registros até o saldo ser zerado ou até hoje. (Através deste tópico: Re: Criar registros diários)
O problema está que se uso este "Not Exists" o resultado é esse:
A coluna "teste" é o cálculo ValorLiquidoTitulo - TotalValorMovimentacao, mas como 470,67 - 470,67 resulta em 5,6843418860808e-014 ??
Mas se eu remover a parte do Not Exists da Tabela, tudo funciona normal: (Os valores de movimentação são diferentes pois sem o Not Exists ele está considerando estornos também)
Alguém tem alguma ideia do que pode ser isto?
Amigo;
Consegui resolver, segue:
Substitua na parte //Agrupamento;;
De:
Sum(ValorMovimentacao) As 'TotalValorMovimentacao',
Por:
Round(Sum(ValorMovimentacao),'0,01') As 'TotalValorMovimentacao',
O erro ocorre somente quando existe casas decimais no campo 'ValorMovimentacao';
Estranho que fiz vários testes, formatando com Num()..., no frond-end ficava normal com Num() no script, mas mesmo assim, na parte //Preenchendo_Intervalos_Datas estava apresentando erro na condição If() no While, não retornando -1(True/Verdadeiro) para os valores iguais para TotalValorMovimentacao=ValorLiquidoTitulo;
Enfim... Não existe mais de duas casas decimais, porém forcei um arredondamento "imaginário" e funcionou.
Pois TotalValorMovimentacao(470,67) > ValorLiquidoTitulo(470,67) estava retornando verdadeiro.
Primeira vez que vejo esta situação estranha.
Amigo, tente;
Expressão para o campo teste:
Column(1)-Column(2)
Mario,
O problema está no script mesmo, porque lembra que você me ajudou a criar no outro tópico? Então o campo SaldoDevedor fica mostrando 5,6843418860808e-014 e criando registros até hoje e não parando quando o saldo é 0, pois segundo ele 470,67 - 470,67 não é 0 haha
Douglas tem como postar um exemplo?
Não entendi muito bem pq você está fazendo esta estrutura do not exists.
Amigo, estranho sua expressão da coluna "teste" ter apresentado este resultado;
Haja vista que as colunas dos cálculos apresentados na tabela estão ok;
Favor, não deixe de testar a expressão que te falei, me retorna com o resultado;
A função Collumn() utiliza o que é apresentado na tabela no seu caso, os números interno da função é a ordem das expressão;
Se as colunas ValorLiquidoTitulo e TotalValorMovimentacao não está como expressões, transforma-os;
Esta com problemas com o script que havia te passado? Ou ficou após ter incluido o seu script com Not Exists()?
Mario,
Acredito que o problema dele não seja nada relacionado ao exists. E sim a casas decimais, no caso funciona sem o exists pq ele busca a tabela completa com tabela de estornos, pois o valor no segundo caso o campo totalvalormovimentacao vai para 1412. Poderiamos fazer um teste com floor no script.
Faço o Not Exists porque quando tem um título estornado, na tabela ficam 2 registros iguais só que apenas um tem o Tipo Movimentação = 'ES', mas preciso apagar os 2.
Exemplo:
Chave Valor Receb/Pag Tipo
ChaveA1 200 Recebimento NOR
ChaveA1 200 Pagamento ES
ChaveA2 400 Recebimento MOT
ChaveA3 100 Recebimento NOR
Neste caso, preciso excluir os 2 registros que tenham a "ChaveA1".
É que o problema não ficou apenas na tabela, depois do Not Exists ele "bagunçou" o script:
Quando ele deveria zerar o saldo, começou a colocar aquele valor 5,6843418860808e-014.
Por padrão, vejo que quando formatado os campos numéricos, se necessário, o sistema arredonda os campos decimais no tipo round(); *Pelo menos no Qlik Sense, creio que o mesmo para Qlikview.
Mas a questão é que no resultado do campo "teste" temos 5,68... Ou seja, uma diferença considerável para ser por conta de arredondamento das casas decimais.
Após inclusão do seu script... Foi gerado uma chave sintética?