Вы находитесь на странице: 1из 7

El ejemplo consiste en utilizar funcionalidad nueva para permitir que, en una grfica

(por ejemplo), el usuario pueda comparar 2 conjuntos de valores diferentes para un


campo determinado.


En el ejemplo tenemos ventas por productos y queremos que el usuario pueda
comparar todas las ventas de una serie de productos, con otra suma de otros
productos. Estos dos conjuntos, como cosa interesante, los crea el usuario en tiempo
de ejecucin.



En este ejemplo vamos a tocar los siguientes aspectos:



Set Anlysis: Este ejemplo se resuelve de una forma ms "rentable" utilizando
esta nueva funcionalidad de lgica de conjuntos.


Editor de mdulo: para definir los conjuntos, utilizaremos 2 pequeas
funciones de cdigo para rellenar los valores de 2 variables definidas en el
documento.


Variables de documento: utilizaremos 2 variables para almacenar las
selecciones del usuario para el "GRUPO 1" y para "GRUPO 2".


Editor de script de carga: utilizaremos la sentencia LOAD InLine para realizar
una carga de datos internos al documento, es decir, cargamos "a pin" unos
datos de venta para unas categoras que tambin se cargar con la sentencia
InLine. Podramos haberlo hecho con una excel o una tabla de SQL.


Os recomiendo que practiquis con un documento nuevo y lo hagis desde cero. Para
ello cargaremos unos datos ficticios de venta en el script utilizando la sentencia
"InLine".


Men "Archivo" > "Nuevo"


Creamos las 2 variables que , ms tarde, utilizaremos llamadas "Seleccion 1" y
"Seleccion 2" y no definiremos ninguna regla de entrada y las dejaremos tal cual.


Men "Configuraciones" > "Propiedades del documento" > "Variables" >
"Nueva"


"Ctrl + Alt + D"


Abrimos el editor de script ("ctrl + E") y creamos 3 tablas: "CATEGORIAS",
"ARTICULOS" y "VENTAS" utilizando las siguientes sentencias:


CATEGORIAS:
Load * inline[IdCategoria, Categoria
1,Bebidas
2,Snacks
3,Sopas
4,Postres
5,Golosinas];

ARTICULOS:
Load * inline
[IdArticulo, Nombre, IdCategoria
1,Zumo Naranja,1
2,Zumo Tomate,1
3,Coca-cola,1
4,Tea,1
5,Cacahuetes,2
6,Pipas,2
7,Gusanitos,2
8,Sopa de verduras,3
9,Sopa de fideos,3
10,Profiteroles,3
11,Tarta de arndanos,4
12,Tarta de queso,4
13,Chicles menta,5
14,Chicles fresa,5];




VENTAS:
Load * inline
[fecha,IdArticulo,Importe
01-01-2008,1,200.5
01-01-2008,3,150
01-01-2008,2,75
01-01-2008,5,10
01-01-2008,6,15
01-01-2008,9,250
01-01-2008,10,100
01-01-2008,11,90
01-01-2008,12,140.5
01-01-2008,14,25
02-01-2008,1,100
02-01-2008,3,45
02-01-2008,4,30
02-01-2008,6,4
02-01-2008,7,25
02-01-2008,10,100
02-01-2008,12,175
02-01-2008,13,5
03-02-2008,2,40.55
03-02-2008,3,50
03-02-2008,4,75
03-02-2008,8,34
03-02-2008,10,75
03-02-2008,11,74
03-02-2008,13,3];
Guardamos el documento en la carpeta que queramos, y ejecutamos el script.



Una vez finalizada la recarga del script, ahora vamos a crear un grfico para
comprobar que podemos sacar las ventas por categora. Creamos un nuevo objeto de
tipo "grfico" y seleccionamos el tipo "grfico de barras", seleccionamos la dimensin
"Categora" y como expresin "Sum(Importe)". El resultado se debera parecer a lo
siguiente
A continuacin, vamos a aadir a nuestra hoja un cuadro
de lista para que el usuario pueda seleccionar los valores para el campo "Categora" y
hacer los grupos.


Aadimos 2 botones llamados respectivamente "Seleccionar Grupo 1" y "seleccionar
Grupo 2".



Accedemos al editor de mdulo (Ctrl + M) y creamos 2 rutinas



Sub Seleccion1
End Sub



Sub Seleccion2
End Sub



y las asociamos respectivamente a los botones anteriormente creados.



El cdigo de las 2 rutinas es el siguiente:




Sub Seleccion1

set mySelections = ActiveDocument.fields("Categoria").GetSelectedValues
dim SelectedItems if mySelections.Count <> 0 then

for i = 0 to mySelections.Count - 1
SelectedItems = SelectedItems + """" + mySelections.Item(i).text +
"""" + "," next SelectedItems = left(SelectedItems,
len(SelectedItems) - 1)

set v = ActiveDocument.GetVariable("Seleccion 1")
v.SetContent SelectedItems,true

Else

set v = ActiveDocument.GetVariable("Seleccion 2")

v.SetContent "",true

End
if ActiveDocument.fields("Categoria").Clear

End Sub


Sub Seleccion2

set mySelections = ActiveDocument.fields("Categoria").GetSelectedValues
dim SelectedItems if mySelections.Count <> 0 then

for i = 0 to mySelections.Count - 1

SelectedItems = SelectedItems + """" + mySelections.Item(i).text + """" + ","

next

SelectedItems = left(SelectedItems, len(SelectedItems) - 1)

set v = ActiveDocument.GetVariable("Seleccion 2")

v.SetContent SelectedItems,true

Else

set v = ActiveDocument.GetVariable("Seleccion 2")

v.SetContent "",true

End

if ActiveDocument.fields("Categoria").Clear

End Sub


Una vez que ya tenemos el cdigo y hemos asociado las rutinas a los botones ya
estamos preparados para crear un grfico que represente la suma de las 2 selecciones.

Creamos un grfico sin dimensiones y le aadimos 2 expresiones


1.
Sum({$<[Categoria]={$(Seleccion 1)}>} Importe)

2.
Sum({$<[Categoria]={$(Seleccion 2)}>} Importe)

El truco est en que utilizando "Set Analysis" somos capaces de definir una seleccin
fija independiente de las del documento, solo que como novedad, no tiene por qu ser
una seleccin fija sino depender de una variable ("seleccion 1") que lo hace dinmico
al usuario. Qlikview sustituir antes de evaluar la expresin ( a esto se le llama
expansin de una variable) $(variable) por algo como {"Postres","Bebidas", ...}.

El grfico quedara ms o menos de la siguiente manera...

Ahora ya podis comprobar el resultado
para lo que debis seleccionar varias categoras y entonces pinchis en el botn 1,
volvis a seleccionar otras categoras y pinchis en el botn 2 y vis viendo cmo
cambia la ltima grfica.

Adems, podis comprobar que aunque el usuario haga otras selecciones, la grfica no
cambia.

Para terminar vamos a agregar una lnea de referencia en el grfico que represente la
media de las ventas, para esto editamos las propiedades del grfico, en la pestaa
"presentacin", creamos una lnea de referencia con la expresin
AVG({1} Importe).

Вам также может понравиться