Qlik Community

QlikView Scripting

Discussion Board for collaboration on QlikView Scripting.

Announcements

Breathe easy -- you now have more time to plan your next steps with Qlik!
QlikView 11.2 Extended Support is now valid through December 31, 2020. Click here for more information.

Not applicable

Cambiar label una vez añadidas las dimensiones

Buenas tardes,

A continuación os muestro el código que tengo en el editor de módulos (MACRO) en donde genero dimensiones y expresiones de forma dínamica en un chart (tabla dinámica).

Para las expresiones (marcada la línea en XXX1: ), una vez las creo luego les cambio el label para que sea más legible pero en las dimensiones no lo consiguo utilizando el código marcado en XXX2:.

Dim vDim
Dim vExp
'.........................................................
sub haySeleccion

set x = ActiveDocument.GetCurrentSelections
s = x.Selections
v = x.VarId

bDim = false
bExp = false

for i = lbound(s) to ubound(s)
     'msgbox v(i) & " = " & s(i)

     if v(i) = "%NombreDim" then
       bDim = true
       vDim = s(i)
     end if

     if v(i) = "%NombreExp" then
        bExp = true
        vExp = s(i)
      end if
next

if bDim and bExp then
  ConstruirTablaDinamica
end if
end sub
'.........................................................

sub ConstruirTablaDinamica

set chart = ActiveDocument.GetSheetObject("CH17")

set dims = chart.GetProperties.Dimensions
set exps = chart.GetProperties.Expressions

'Borramos las dimensiones
for i=0 to dims.Count
  chart.RemoveDimension 0
next

'Creamos las dimensiones seleccionadas
set dimValues = ActiveDocument.fields("%Dimension").getPossibleValues
set dimSelection = ActiveDocument.fields("%NombreDim").GetSelectedValues

for i=0 to dimValues.Count - 1
     'msgbox(dimSelection.Item(i).text)
  chart.AddDimension dimValues.Item(i).text

  set p = chart.GetProperties
  set dims = p.Dimensions
 

  'XXX2: INTENTO RENOMBRAR EL TÍTULO DE LA DIMENSIÓN

  dims(i).Title.v = dimSelection.Item(i).text

  next

'Creamos las expresiones seleccionadas
for i=0 to exps.Count - 1
  chart.RemoveExpression 0
next

set expValues = ActiveDocument.fields("%Expresion").getPossibleValues
set expSelection = ActiveDocument.fields("%NombreExp").GetSelectedValues

for i=0 to expValues.Count - 1
     'msgbox(expValues.Item(i).Text)
  chart.AddExpression expValues.Item(i).Text
 

  set p = chart.GetProperties
  set exps = p.Expressions
  set expItem = p.Expressions.Item(i).Item(0).Data.ExpressionVisual.NumberPresentation
  expItem.Dec = ","
  expItem.Fmt = "#.##0,00;-#.##0,00"
  expItem.nDec = 2
  expItem.Thou = "."
  expItem.Type = 11 'fixed decimal
  expItem.UseThou = 1

  'XXX1: RENOMBRAMOS EL LABEL DE LA EXPRESIÓN

  set expItem = exps.Item(i).Item(0).Data.ExpressionVisual
  expItem.Label.v = expSelection.Item(i).Text

  chart.SetProperties p
next
end sub

He estado buceando y he visto que en teoría se haría así, pero no me funciona.

Me pueden echar una mano?

Gracias de antemano.

1 Reply
danielrozental
Not applicable

Cambiar label una vez añadidas las dimensiones

Creo que sería mucho mas sencillo utilizar variables en las descripciones y cambiarlas por medio de acciones o incluso cambiar las variables por medio de macros si no te alcanza con la funcionalidad de las acciones.