Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
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:
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!
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)
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)
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?
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.
Entendi Rodrigo,
Muito obrigado pela ajuda!
Abraço