Interprete interno di macro

Gli oggetti QlikView sono accessibili mediante automazione dall'interno di QlikView tramite il motore di script incorporato.

Richiamo delle macro

Le macro scritte in VBScript o JScript all'interno di un documento QlikView possono essere richiamate nei seguenti modi:

Eventi di documento:

  • Una macro può essere eseguita dopo aver aperto un documento QlikView.
  • Una macro può essere eseguita dopo la riesecuzione dello script.
  • Una macro può essere eseguita dopo il comando Riduci i dati.
  • Una macro può essere eseguita dopo la selezione di un qualsiasi campo nel documento.
  • Una macro può essere eseguita quando il valore di una qualsiasi variabile del documento cambia.

Le macro richiamate dagli eventi di documento vengono create dalla pagina Proprietà documento: Eventi di avvio.

Eventi di foglio:

  • Una macro può essere eseguita dopo l'attivazione di un foglio.
  • Una macro può essere eseguita quando un foglio viene disattivato.

Le macro richiamate dagli eventi di foglio vengono create dalla pagina Proprietà foglio: Eventi di avvio.

Eventi di oggetti di lavoro:

  • Una macro può essere eseguita dopo che un oggetto di lavoro viene attivato.
  • Una macro può essere eseguita quando viene disattivato un oggetto di lavoro.

Le macro richiamate dagli eventi degli oggetti di lavoro vengono create dalla pagina Proprietà foglio: Eventi di avvio.

Eventi di pulsanti:

  • Un pulsante può essere definito come un pulsante macro.

Una macro richiamata da un evento del pulsante macro viene creata dalla pagina Azioni relativa al pulsante.

Eventi di campo:

  • Una macro può essere eseguita dopo che è stata effettuata una selezione in un campo specificato.
  • Una macro può essere eseguita quando si esegue una selezione in un qualsiasi campo logicamente associato a un campo specifico.
  • Una macro può essere eseguita quando si bloccano le selezioni in un campo specifico.
  • Una macro può essere eseguita quando vengono sbloccate le selezioni in un campo specifico.

Le macro richiamate dagli eventi di campo vengono create dalla pagina Proprietà documento: Eventi di avvio.

Eventi di variabili:

  • Una macro può essere eseguita quando nuovi valori vengono immessi direttamente dalle variabili di script specificate.
  • Una macro può essere eseguita quando il valore della variabile associata viene modificato dal cambiamento in altre variabili o nello stato logico del documento.

Le macro richiamate dagli eventi di variabile vengono create dalla pagina Proprietà documento: Eventi di avvio.

Editor di macro:

Le macro vengono create e modificate nella finestra di dialogo Modifica modulo indipendentemente dal loro metodo di attivazione.

Esempi:  

In questa sezione viene fornito un utile esempio di una macro VBScript che può risultare utile.

Using VBScript Input Boxes for User Interaction

rem ** Clear selections, ask for product, **

rem ** select that product, **

rem ** go to sheet "Market", **

rem ** show pivot table "Sales" **

Sub ChooseValue

Set q = ActiveDocument

q.ClearAll (false)

Set f = q.Fields("Model Name")

x = inputbox ("Enter product")

f.Select(x)

set s = q.Sheets("Market")

s.Activate

s.SheetObjects("Sales").Activate

end sub

Funzioni di librerie speciali per JScript

Mentre le funzioni VBScript standard e le funzioni InputBox e MsgBox possono essere utilizzate liberamente nelle macro VBScript, nessuna funzione direttamente corrispondente è disponibile quando si utilizza JScript. A questo scopo è stata aggiunta una libreria speciale qvlib che consente tali azioni. Le funzioni sono mostrate nell'esempio seguente.

// JScript

function Test()

{

personName = qvlib.InputBox("What is you name?")

msg = "Hello " + personName + " !"

qvlib.MsgBox(msg)

}

Le funzioni qvlib sono effettivamente utilizzabili anche nelle macro VBScript, come mostrato nel seguente esempio, ma in questo caso è possibile utilizzare anche le funzioni VBScript generiche InputBox eMsgBox.

rem VBScript

sub TestModule

name = qvlib.InputBox("What is your name?")

msg = "Hello "

msg = msg + name + " !"

qvlib.MsgBox(msg)

end sub