4 Replies Latest reply: Oct 25, 2016 3:59 PM by Kleiton Moraes RSS

    Ajuda com Expressão

    Kleiton Moraes

      Pessoal,

      Boa tarde!

       

      Estou com o seguinte cenário: Possuo uma tabela com dados do contrato e uma tabela com um cronograma anual de liberações de valores para esse contrato montei o gráfico dessa forma:

       

      Lib1.PNG

      Minha necessidade é exibir os valores de liberações quando o Ano/Mês do primeiro gráfico forem iguais ao Ano/Mês do segundo, pensei em fazer da seguinte forma, na expressão "Liberações" no primeiro gráfico faço essa validação:

      IF((MakeDate([Ano da Projeção], [Mês da Projeção], 01)) = vCronograma, Vl2,0)

       

      as dimensões [Ano da Projeção] e [Mês da Projeção] são as duas primeiras colunas no primeiro gráfico, e a variável vCronograma está assim: =MakeDate(Year(DT2), Month(DT2), 01)

       

      O campo DT2 corresponde a data exibida na coluna "Data da Liberação" no segundo gráfico.

      Quando faço a seleção no segundo gráfico, o resultado é conforme esperado, ficando dessa forma:

       

      Lib2.PNG

      O valor da liberação foi para a coluna "Liberações"

       

      Porém, precisou da ação do usuário realizando a seleção, como eu tenho mais de uma liberação gostaria que os valores fossem aplicados seguindo a mesma lógica para todos os Ano/Mês equivalentes entre as duas tabelas, porém sem a necessidade da ação do usuário.

       

      Alguém pode me explicar por favor se é possível fazer isso?

       

      A modelagem entre essas duas tabelas é simples, está assim:

       

      Obrigado!

       

      lib3.PNG

        • Re: Ajuda com Expressão
          rodrigo silvestre

          tenta jogar o if pra dentro de um SUM()

           

          sum(IF((MakeDate([Ano da Projeção], [Mês da Projeção], 01)) = MakeDate(Year(DT2), Month(DT2), 01), Vl2))

           

          * se for usar a variável vCronograma , certifique-se dela estar sendo calculada dentro do objeto, da forma como esta acho que ela esta sendo calculada fora do objeto.

           

          eu sempre deixo sem o " = " na variável.... e na expressão uso $(vCronograma)

            • Re: Ajuda com Expressão
              Kleiton Moraes

              Rodrigo,

              Sua dica funcionou!, muito obrigado!

               

              Só queria entender melhor a parte que você fala para garantir que a variável está sendo calculada dentro do objeto, podes explicar por favor?

                • Re: Ajuda com Expressão
                  rodrigo silvestre

                  Seguinte, imagine que você tem la:

                  mês valor

                  jan  150

                  fev  500

                  mar 350

                   

                  se você criar uma variável "vValor" e deixar o conteúdo dela, por exemplo: "= sum(valor)" , quando você for usar a variável, ela irá vir com o cálculo pronto, imagine que você colocou  vValor em uma gráfico de tabela com a dimensão mês, o resultado seria esse:

                   

                  jan  1000

                  fev  1000

                  mar 1000

                   

                  O que você precisa fazer para utilizar a variável como expressão, é trazer ela como "texto" para ela ser calculada dentro dos objetos, como eu faço isso, na hora de definir a variável eu a defino sempre sem o "=" na frente, com isso se eu colocar apenas vValor em objeto de texto por exemplo, o resultado será o texto: "sum(valor)" , se eu quiser trazer o valor dessa variável, eu a escrevo assim $(vValor) . Dessa forma eu sei que minha variável estará sendo calculada dentro do objeto considerando suas dimensões e não apenas trazendo o valor total já calculado pro objeto.

                   

                   

                  Voltando ao seu exemplo, na sua variável

                   

                  =MakeDate(Year(DT2), Month(DT2), 01)


                  se você jogar ela dentro de um objeto de texto, verá que vem nullo, porque você esta aplicando a função a todos os valores do campos DT2, essa função só vai funcionar se for aplicada a apenas um valor de DT2, por isso quando você seleciona apenas um campo, a expressão funciona.


                  Se ficou mais alguma dúvida, só perguntar..


                  Abraço.