Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Função ALL

Srs. Bom dia.

Sou novo no Qlikview e estou com uma função que esta me fazendo quebrar a cabeça. Preciso trazer os valores de VALORPREV que estão na FUNÇÃO = 9 somados aos valores das funções menores do que 9 que tem CLASSDESPESA = '4.4.90.51' E CLASSDESPESA = '4.4.90.512. Esse CLASSDESPESA é uma classificação existente dentro da FUNÇÃO. No script abaixo consigo fazer isso usando a função All, porém foi necessário mudar a consulta e agora preciso selecionar outras informações e essa função não se aplica mais. Segue o script.

if(funcao.COD_FUNCAO = 9, sum(ALL if((classdespesa.CD_CLASSDESPESA = '4.4.90.51' or classdespesa.CD_CLASSDESPESA = '4.4.90.52')or funcao.COD_FUNCAO = 9, recfindespesa.VALORPREV)), 

  if(funcao.COD_FUNCAO < 9, sum(if((classdespesa.CD_CLASSDESPESA = '3.1.90.11' or

  classdespesa.CD_CLASSDESPESA = '3.1.90.13' or

  classdespesa.CD_CLASSDESPESA = '3.1.90.16' or

  classdespesa.CD_CLASSDESPESA = '3.3.50.41.03' or

  classdespesa.CD_CLASSDESPESA = '3.3.90.30' or

  classdespesa.CD_CLASSDESPESA = '3.3.90.36' or

  classdespesa.CD_CLASSDESPESA = '3.3.90.39' or

  classdespesa.CD_CLASSDESPESA = '4.5.90.61'), recfindespesa.VALORPREV)), Sum(recfindespesa.VALORPREV)))

Alguém tem alguma ideia?

Desde já obrigado.

26 Replies
Anonymous
Not applicable
Author

raphael,

Show sua explicação sobre os comandos. Nem sempre conseguimos absorver o que os comandos fazem pela explicação dos manuais ou no que achamos na internet.

Quanto ao script, acho que foi a mesma situação do Cesar, onde vc não entendeu ( ou eu não passei direito) a real função do script. Veja o que escrevi no post dele:

"Preciso que a função faça o seguinte: quando não tiver nenhuma seleção, ele vai ler todos os registros e dar o total. Quando estiver selecionado a função 9, ele vai somar todos os registros da 9 mais as contas "4.4.90.51" e "4.4.90.52" das outras contas. Quando houver qualquer outra seleção, ele vai somar tudo menos o que houver nessas contas."

Obrigado

rphpacheco
Creator III
Creator III

Bom Marcos, então não entendi bem o teu problema.

Pelo que entendi você quer pegar a soma do VALORPREV, onde a Função seja = 9

Para isso segue o primeiro Set Analysis:

Sum({<funcao.COD_FUNCAO={'9'}>} recfindespesa.VALORPREV)

Depois entendi que você quer somar este valor aos valores de  VALORPREV, onde a Função seja menor que 9 e CLASSDESPESA sejam = 4.4.90.51 e 4.4.90.512.

Sendo assim, segue o segundo Set Analysis:

Sum({<funcao.COD_FUNCAO={'<9'}, classdespesa.CD_CLASSDESPESA ={'4.4.90.51','4.4.90.512'}>} recfindespesa.VALORPREV)

Foi isso que entendi, caso não seja, explique melhor para que possamos fechar este tópico.

Anonymous
Not applicable
Author

Raphael,

Vou mudar a explicação para ver se facilito o entendimento.

Situação 1 - Nenhuma seleção.

Simples soma do VALORPREV e pelo que entendi fica assim:

Sum (recfindespesa.VALORPREV)

Situação 2 - Selecionado função = 9.

Soma do VALORPREV (com todas as CLASSDESPESA da função = 9) + as CLASSDESPESA = 4.4.90.51 e 4.4.90.52 de todas as outras funções.

Suponho que fique assim:

Sum({<funcao.COD_FUNCAO={'9'}, classdespesa.CD_CLASSDESPESA ={'4.4.90.51','4.4.90.512'}>} recfindespesa.VALORPREV) 

Este codigo não deu certo, por isso disse o suponho ...

Situação 3 - Selecionado qualquer função que não seja a 9:

Soma do VALORPREV da função escolhida - (menos) as CLASSDESPESA = 4.4.90.51 e 4.4.90.52.

Novamente, suponho que fique assim:

if (funcao.COD_FUNCAO = '9',

    sum({$< classdespesa.CD_CLASSDESPESA = {"*"} -{"4.4.90.51","4.4.90.52"} > } recfindespesa.VALORPREV)

Bom, é isso. Mais uma vez peço desculpa se não soube explicar a situação, mas como disse sou iniciante e espero que possa num futuro proximo ajudar assim como vcs tem me ajudado.

Obrigado desde já.

rphpacheco
Creator III
Creator III

Bom, agora acho que entendi a sua necessidade.

Segue a expressão:

If(IsNull(GetCurrentSelections()),

Sum(recfindespesa.VALORPREV),

If(funcao.COD_FUNCAO = 9

  ,Sum({<funcao.COD_FUNCAO={'9'}>} recfindespesa.VALORPREV) + Sum({<classdespesa.CD_CLASSDESPESA ={'4.4.90.51','4.4.90.512'}>} recfindespesa.VALORPREV)

  ,Sum({<funcao.COD_FUNCAO-={'9'}>} recfindespesa.VALORPREV) + Sum({<classdespesa.CD_CLASSDESPESA -={'4.4.90.51','4.4.90.512'}>} recfindespesa.VALORPREV)

)

)

Nela verificamos se há uma seleção, se não houver ele irá apenas somar o VALORPREV.

Senão ele verificará se a opção 9 está selecionada, caso estiver ele irá somar tudo que estiver nessa conta mais as CLASSDESPESA 4.4.90.51 e 4.4.90.512. E por último, se outras contas estiverem selecionadas ele irá somar tudo menos a opção 9 e as CLASSDESPESA citadas.

Espero que agora seja isso rsrsrsrsr.

matzenbacher
Creator II
Creator II

Material com exemplos, sobre all e total pra reforçar!

Set Analysis QlikView: Entendendo ALL e TOTAL | Pedro Elsner, Profissional de TI

Anonymous
Not applicable
Author

Srs, com a ajuda de todos chegamos na função que resolveu o dito problema. Ela é a seguinte:

If(IsNull(GetCurrentSelections()),

  Sum(recfindespesa.VALORPREV),

  If(funcao.COD_FUNCAO = 9,

  Sum({<funcao.COD_FUNCAO={'9'}>} recfindespesa.VALORPREV) + Sum({<classdespesa.CD_CLASSDESPESA ={'4.4.90.51','4.4.90.52'}>} recfindespesa.VALORPREV),

  if(funcao.COD_FUNCAO <> 9,

  Sum({<funcao.COD_FUNCAO =- {'9'}>} recfindespesa.VALORPREV) - Sum({<classdespesa.CD_CLASSDESPESA ={'4.4.90.51','4.4.90.52'}>} recfindespesa.VALORPREV))))

Desde já obrigado.

Marcos Nakao

cesarc2sistemas
Contributor III
Contributor III

O importante é que funcionou!

Até mais