Chiamate di funzioni VBScript dallo script

Le funzioni VBScript o JScript definite nel modulo macro di un documento QlikView possono essere richiamate dallo script. Se una funzione richiamata non viene riconosciuta come una funzione di script standard, viene eseguita una verifica per determinare se nel modulo è presente una funzione personalizzata. Ciò offre una grande libertà di definizione di funzioni personalizzate. L'utilizzo di funzioni macro personalizzate naturalmente è più lento rispetto all'esecuzione delle funzioni standard.

rem *************************************************

rem ***THIS IS VBSCRIPT CODE FROM THE MODULE********* rem**************************************************

rem ********* Global variables ********************

dim flag

rem *******functions accessible from script *********

rem ************ wrap for input box ******************

function VBin(prompt)

VBin=inputbox(prompt)

end function

 

rem ************ clear global flag ******************

function VBclearFlag()

flag=0

end function

rem ********* test if reference has passed ***********

function VBrelPos(Ref, Current)

if Ref=Current then

VBRelPos="Reference"

flag=1

elseif flag=0 then

VBRelPos="Before "&Ref&" in table"

else

VBRelPos="After "&Ref&" in table"

end if

end function

// **************************************************

// *************THIS IS THE SCRIPT *****************

// *************************************************

 

let MaxPop=VBin('Max population in millions :');

// Ask limit

 

let RefCountry=VBin('Reference country :');

// Ask ref.

 

let dummy=VBclearFlag(); // Clears the global flag

 

Load

Country,recno(),

Capital,

"Area(km.sq)",

"Population(mio)",

VBrelPos('$(RefCountry)',Country)

as RelativePos

from country1.csv

(ansi, txt, delimiter is ',', embedded labels)

where "Population(mio)" <= $(MaxPop);

Trasferimento di parametri

Le regole seguenti valgono per il trasferimento di parametri fra lo script di caricamento e VBScript:

  • Parametri mancanti vengono passati come NULL
  • Se l'espressione effettiva viene valutata come un numero valido, viene passato il numero; se l'espressione effettiva viene valutata come una stringa valida, viene passata la stringa, altrimenti viene passato NULL.
  • NULL viene passato come VT_EMPTY.
  • I valori restituiti vengono trattati in un modo naturale.