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

Tabela Dinamica

Ola galera boa noite,

     Eu mais uma vez, eu estou para entregar um projeto, e fiz uma tabela dinamica, onde o usuario vai clicando nas dimensões e eu vou mostrando as colunas, como eu faço isso ? eu crio via inline as dimensoes disponiveis para ele clicar, no grafico dinamico eu tenho o seguinte codigo em condicional da dimensão ou das expressoes :

=SubStringCount(Concat(Codigo_Dimensao_Beneficiario, '|'), 01) onde o numero passado é o código da tabela inline que identifica qual foi o selecionado pelo usuario, isso funciona certinho, tenho isso implementado em alguns clientes, porém nesse em especifico não esta funcionando, percebi que o qlikview deles é bem antigo, porém não consegui ver a versão do qlikview server instalado, eles ainda não atualizaram, minha pergunta é, o que eu preciso alterar ou não poderei implementar essa funcionalidade devido a versão do qlikview ? porque na minha maquina e nos clientes que instalaram qlikview agora funciona, no qlikview server desse cliente que é antigo não funciona.

Labels (2)
1 Solution

Accepted Solutions
fernando_tonial
Partner - Specialist
Partner - Specialist

Bom dia Wagner, essa funcionalidade de condição de dimensão e expressão foi implementada na versão 11 do QlikView. Caso seu cliente tenha a versão anterior a 11 com certeza não funcionará.

Uma alternativa para esse caso é a criar algumas macros para adicionar dimensões e métricas.

Para executar a macro é necessária uma ação de macro do tipo externa.

Sub GerarTabela

  LimparTabela

  set chart = ActiveDocument.GetSheetObject("CH_DINAMICO")

  'clean chart

  set dims = chart.GetProperties.Dimensions

  set exps = chart.GetProperties.Expressions

  'msgbox("Dimensoes = " & dims.Count)

  'msgbox("Expressoes = " & exps.Count)

  for i=0 to dims.Count

  'msgbox("Dimensoes = " & i)

  chart.RemoveDimension i

  next

  'add dimensions

  set dimSelection = ActiveDocument.fields("Dimensao_Campo").GetPossibleValues

  set dimRotulo = ActiveDocument.fields("Dimensao_Relacao").GetSelectedValues

  for i=0 to dimSelection.Count - 1

     'msgbox(dimSelection.Item(i).text)

  chart.AddDimension dimSelection.Item(i).text

  'rename an dimension title

  set prop = chart.GetProperties

  Prop.Dimensions.Item(i).Title.v = dimRotulo.Item(i).text

  chart.SetProperties prop

  next

  for i=0 to exps.Count - 1

  'msgbox("Expressoes = " & i)

  chart.RemoveExpression i

  next

  set expValues = ActiveDocument.fields("Metrica_Calculo").GetPossibleValues

  set expSelection = ActiveDocument.fields("Metrica_Rotulo").GetPossibleValues

  'set expSelection = ActiveDocument.fields("%ExpName").GetSelectedValues

  for i=0 to expValues.Count - 1

     

      'msgbox(expValues.Item(i).Text)

  chart.AddExpression expValues.Item(i).Text

  'rename an expression label

  set p = chart.GetProperties

  set exps = p.Expressions

  set expItem = exps.Item(i).Item(0).Data.ExpressionVisual

  expItem.Label.v = expSelection.Item(i).Text

  'msgbox(expItem.Label.v)

  chart.SetProperties p

  next

  NroLinhas

end sub

Sub LimparTabela

  On Error Resume Next

  set chart = ActiveDocument.GetSheetObject("CH_DINAMICO")

  'clean chart

  set dims = chart.GetProperties.Dimensions

  d = dims.Count - 1

  For i = d to 0 Step -1

  chart.RemoveDimension i

  Next

  'msgbox("Teste 1")

  set exps = chart.GetProperties.Expressions

  e = exps.Count - 1

  For i = e to 0 Step -1

  chart.RemoveExpression i

  Next

  'msgbox("Teste 2")

End Sub

Para o funcionamento foram criadas tabelas com as informações necessárias para cada dimensão e métricas.

Dimensoes_Rel:

LOAD

  Dimensao_Ordem,

  Dimensao_Relacao,

  Dimensao_Campo

FROM

[..\$(vLocalDadosExcel)Food\Metricas e Dimensoes.xls]

(biff, embedded labels, table is Dimensoes$);

Metricas_Rel:

LOAD

  Metrica_Ordem,

  Metrica_Relacao,

  Metrica_Calculo,

  Metrica_Rotulo

FROM

[..\$(vLocalDadosExcel)Food\Metricas e Dimensoes.xls]

(biff, embedded labels, table is Metricas$);

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.

View solution in original post

1 Reply
fernando_tonial
Partner - Specialist
Partner - Specialist

Bom dia Wagner, essa funcionalidade de condição de dimensão e expressão foi implementada na versão 11 do QlikView. Caso seu cliente tenha a versão anterior a 11 com certeza não funcionará.

Uma alternativa para esse caso é a criar algumas macros para adicionar dimensões e métricas.

Para executar a macro é necessária uma ação de macro do tipo externa.

Sub GerarTabela

  LimparTabela

  set chart = ActiveDocument.GetSheetObject("CH_DINAMICO")

  'clean chart

  set dims = chart.GetProperties.Dimensions

  set exps = chart.GetProperties.Expressions

  'msgbox("Dimensoes = " & dims.Count)

  'msgbox("Expressoes = " & exps.Count)

  for i=0 to dims.Count

  'msgbox("Dimensoes = " & i)

  chart.RemoveDimension i

  next

  'add dimensions

  set dimSelection = ActiveDocument.fields("Dimensao_Campo").GetPossibleValues

  set dimRotulo = ActiveDocument.fields("Dimensao_Relacao").GetSelectedValues

  for i=0 to dimSelection.Count - 1

     'msgbox(dimSelection.Item(i).text)

  chart.AddDimension dimSelection.Item(i).text

  'rename an dimension title

  set prop = chart.GetProperties

  Prop.Dimensions.Item(i).Title.v = dimRotulo.Item(i).text

  chart.SetProperties prop

  next

  for i=0 to exps.Count - 1

  'msgbox("Expressoes = " & i)

  chart.RemoveExpression i

  next

  set expValues = ActiveDocument.fields("Metrica_Calculo").GetPossibleValues

  set expSelection = ActiveDocument.fields("Metrica_Rotulo").GetPossibleValues

  'set expSelection = ActiveDocument.fields("%ExpName").GetSelectedValues

  for i=0 to expValues.Count - 1

     

      'msgbox(expValues.Item(i).Text)

  chart.AddExpression expValues.Item(i).Text

  'rename an expression label

  set p = chart.GetProperties

  set exps = p.Expressions

  set expItem = exps.Item(i).Item(0).Data.ExpressionVisual

  expItem.Label.v = expSelection.Item(i).Text

  'msgbox(expItem.Label.v)

  chart.SetProperties p

  next

  NroLinhas

end sub

Sub LimparTabela

  On Error Resume Next

  set chart = ActiveDocument.GetSheetObject("CH_DINAMICO")

  'clean chart

  set dims = chart.GetProperties.Dimensions

  d = dims.Count - 1

  For i = d to 0 Step -1

  chart.RemoveDimension i

  Next

  'msgbox("Teste 1")

  set exps = chart.GetProperties.Expressions

  e = exps.Count - 1

  For i = e to 0 Step -1

  chart.RemoveExpression i

  Next

  'msgbox("Teste 2")

End Sub

Para o funcionamento foram criadas tabelas com as informações necessárias para cada dimensão e métricas.

Dimensoes_Rel:

LOAD

  Dimensao_Ordem,

  Dimensao_Relacao,

  Dimensao_Campo

FROM

[..\$(vLocalDadosExcel)Food\Metricas e Dimensoes.xls]

(biff, embedded labels, table is Dimensoes$);

Metricas_Rel:

LOAD

  Metrica_Ordem,

  Metrica_Relacao,

  Metrica_Calculo,

  Metrica_Rotulo

FROM

[..\$(vLocalDadosExcel)Food\Metricas e Dimensoes.xls]

(biff, embedded labels, table is Metricas$);

Qlikfique-se.

Tonial.

Don't Worry, be Qlik.