2 Replies Latest reply: May 23, 2017 12:54 PM by Marcos Ferreira RSS

    Seleção de datas trazendo comportamentos estranhos

    Marcos Ferreira

      Bom dia, senhores.

      Mais uma vez recorro aos senhores...

      Estou começando um painel, para fazer uma comparação entre pedidos de compras e pagamentos realizados, por conta financeira (gerencial). O objetivo é saber, baseado num orçamento por conta financeira, se meus pedidos estão dentro do orçamento, para determinada conta financeira, em determinado mês e ano.

       

      O que ocorre é o seguinte, na minha tabela pedidos, tenho o campo de DT_DA_PARCELA_PED, que através de extract no oracle criei      MES_VENC, e  ANO_VENC, estes dois últimos que provavelmente não usaria, ficaram apenas para testes, pois tenho uma tabela CALENDÁRIO, que pega todas as datas dos fatos e reúnem numa única DATA.

       

      O problema é o seguinte, quando seleciono MÊS e ANO, da tabela CALENDÁRIO, obtenho um valor, quando seleciono o MES_VENC, e  ANO_VENC (ambos vindos, na teoria, do mesmo lugar), obtenho quase o dobro do valor....

       

      Não sei porque isso ocorre.

      Já comentei todo o código do painel inclusive toda LINK_TABLE, deixei o fato PEDIDOS somente com o CALENDÁRIO,  e o problema persiste.

      O problema só se resolve se eu sumir com a tabela CALENDÁRIO, o que não posso, por causa da LINK_TABLE....

       

      Seguem as fotos do painel, com as seleções e valores, também estou anexando o painel principal e o gerador (etl) de qvds...

       

      Por favor, me deem uma luz.

       

      O valor errado R$611.012,

      O valor correto R$1.398.737,

       

      Obrigado.

        • Re: Seleção de datas trazendo comportamentos estranhos
          Vinicius Mariano de Lima

          Bom dia Marcos,

           

          O relacionamento entre as tabelas de pedidos e calendário está com problema.

          Terá que truncar a DATA e formatar para apresentar da mesma forma.

          Verifique a imagem abaixo:

           

          Você terá que converter o valor da Data no pedido e linktable para apresentar de forma correta usando  Date(Floor(DATA)):

          Segue sugestão (não foi testado):

          // ------------------------

           

          PEDIDOS:
          LOAD Distinct
          AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL()                & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO)      as %SK_PEDIDOS,
          ID_PEDIDO,
          CD_PEDIDO,
          ID_PARCELA_PEDIDO_ORCAMENTO,
          //NULL()      AS ID_CONTA_BANCARIA,
                //%ID_EMPRESA,
                STATUS_PED,
          %ID_ALMOXARIFADO,
          %ID_FORNECEDOR,
          VL_DA_PARCELA_PED,
          VL_DA_PARCELA_ORC_PED,
          //Date(DATA, 'DD/MM/YYYY') AS DATA,
               DT_DA_PARCELA_PED,
          MES_VENC,
          ANO_VENC,
          If(day(DATA) < 13, 'De 01 a 12',
          If(day(DATA) < 18, 'De 13 a 17',
          If(day(DATA) < 23, 'De 18 a 22',
          If(day(DATA) < 28, 'De 23 a 27', 'De 28 a 30/31')))) as [Vencimentos_pedidos]
          //%ID_CONTA_GERENCIAL,
               //%ID_UNIDADE_NEGOCIO
          FROM Fonte\Pedidos_orcamento_pagamento\PEDIDOS.qvd (qvd);

           

           

           



          // ------------------------

          LINK_TABLE:
          //PEDIDOS:
          LOAD Distinct
          AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO )     as %SK_RATEIO,
          AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & NULL())                   as %SK_TRANSF,
          AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO)      as %SK_PEDIDOS, //<<<<<<<<
                AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO )     as %SK_ORCAMENTO,
          Date(Floor(DATA)) as DATA,
          //   NULL() AS  %ID_CONTA_BANCARIA,
                %ID_EMPRESA,
          %ID_CONTA_GERENCIAL,
          %ID_UNIDADE_NEGOCIO
          FROM Fonte\Pedidos_orcamento_pagamento\PEDIDOS.qvd (qvd);

           

           

           

          Atenciosamente.

          Vinicius Mariano de Lima