6 Replies Latest reply: Mar 18, 2014 12:32 PM by Anderson Machado RSS

    GetCurrentSelections sem Rótulos

      É 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.

        • Re: GetCurrentSelections sem Rótulos
          Osni Campos

          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

            • Re: GetCurrentSelections sem Rótulos

              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()))

                • Re: GetCurrentSelections sem Rótulos
                  Osni Campos

                  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.

              • Re: GetCurrentSelections sem Rótulos
                Felipe Dutra

                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

                  • Re: GetCurrentSelections sem Rótulos

                    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!

                  • Re: GetCurrentSelections sem Rótulos
                    Pablo Labbe

                    Veja este exemplo Anderson.

                     

                    QlikView App: Current Selections Dynamic Display

                     

                    Será que atende sua necessidade ?