Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
É possível apresentar APENAS os valores que foram selecionado em VÁRIOS campos, sem que apareça o rótulo dos campos.
Já tentei também com o componente "Seleções Atuais" "Escondendo" a coluna dos rótulos com um objeto texto sobrepondo o objeto de seleções atuais. Meu problema é que a posição da coluna muda entre a versão Desktop e Web e preciso que mantenha um padrão nas 2 versões.
Anderson,
Veja se é isso que você quer:
No script:
Set vSeleções1 = "=If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=1, SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2), 'Sem Seleções')";
Set vSeleções2 = "=If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=1, SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2), 'Sem Seleções')";
For vCont = 2 to 15
Set vSeleções1 = "$(vSeleções1)&If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=$(vCont), chr(10)&SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2*$(vCont)), Null())";
Set vSeleções2 = "$(vSeleções2)&If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=$(vCont), ', '&SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2*$(vCont)), Null())";
NEXT
E no layout, em um objeto de texto, use:
=vSeleções1
ou
=vSeleções2
Eu fiz para até 15 Campos, mas você pode aumentar ou diminuir no laço de repetição.
Também pode ser criado no final da carga para o número exato de campos da nuvem.
Abs,
Felipe
A unica maneira que encontrei foi via macro gravando o valor em uma Variável.
segue:
Sub GetAno()
vPeriodo=""
SET fx = ActiveDocument.Fields("[Ano Abate]")
SET fxc= fx.GetPossibleValues
For i = 0 TO fxc.Count -1
vPeriodo = vPeriodo & fxc(i).Text & ", "
Next
vPeriodo = left(vPeriodo,len(vPeriodo)-2)
ActiveDocument.Variables("vPeriodo").SetContent vPeriodo , true
End Sub
Prezado Osni
A solução que você sugeriu tem um problema que é trabalhar com apenas 1 dos campos. Eu consegui o mesmo resultado da sua macro usando o comando abaixo. Porém ele dá certo somente no primeiro campo. Do segundo em diante já aparece o nome do campo.
=Mid(GetCurrentSelections() , FindOneOf(GetCurrentSelections(), ':')+1, Len(GetCurrentSelections()))
Concordo com a limitação da solução aplicada, porem tem a vantagem de trazer todas as possibilidades do campo mesmo que não tenha sido selecionada algum valor.
Com um implementação nos campos que devam ser monitorados, numa mesma funcao resolveria.
Particularmente não gosto de macros e Outra alternativa seria:
=concat(DISTINCT data.ano_mes)&';'&concat(DISTINCT data.data)
Infelizmente continua limitada pois deve ser informado quais campos retornarão resultado.
A vossa solução infelizmente também não é completa, e particularmente eu não usaria, mas vamos estudar e achar uma solução adequada.
Anderson,
Veja se é isso que você quer:
No script:
Set vSeleções1 = "=If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=1, SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2), 'Sem Seleções')";
Set vSeleções2 = "=If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=1, SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2), 'Sem Seleções')";
For vCont = 2 to 15
Set vSeleções1 = "$(vSeleções1)&If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=$(vCont), chr(10)&SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2*$(vCont)), Null())";
Set vSeleções2 = "$(vSeleções2)&If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=$(vCont), ', '&SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2*$(vCont)), Null())";
NEXT
E no layout, em um objeto de texto, use:
=vSeleções1
ou
=vSeleções2
Eu fiz para até 15 Campos, mas você pode aumentar ou diminuir no laço de repetição.
Também pode ser criado no final da carga para o número exato de campos da nuvem.
Abs,
Felipe
Veja este exemplo Anderson.
QlikView App: Current Selections Dynamic Display
Será que atende sua necessidade ?
Felipe
Seu exemplo foi o que consegui chegar ao melhor resultado. Fiz apenas uma pequena alteração porque nos casos em que muitos valores são selecionados acabava passando do espaço que reservei para as seleções, então caso a seleção no campo ultrapasse os 70 caracteres eu exibo: "[Valores] ... de outros".
Segue a alteração que fiz no seu código, o qual está funcional.
Set vSeleções1 = "= If(Len( If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=1, SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2), 'Sem Seleções')) > 70,
Mid(If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=1, SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2), 'Sem Seleções'), 1, 70) & '... e outros.' ,
If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=1, SubField(GetCurrentSelections(' | ', ' | ', ', ', 1000), ' | ', 2), 'Sem Seleções') ) ";
For vCont = 2 to 100
Set vSeleções1 = "$(vSeleções1)& If(Div(SubStringCount(GetCurrentSelections(' | ', ' | '), ' | ')+1, 2)>=$(vCont), chr(10) & If(Len(SubField(GetCurrentSelections(' | ', ' | ', ', ', 50), ' | ', 2*$(vCont))) > 70, Mid(SubField(GetCurrentSelections(' | ', ' | ', ', ', 50), ' | ', 2*$(vCont)),1,70) & '... e outros.',SubField(GetCurrentSelections(' | ', ' | ', ', ', 50), ' | ', 2*$(vCont))), Null() ) " ;
NEXT
Valeu muito obrigado!