Vai al contenuto principale Passa a contenuto complementare

For each..next

L'istruzione di controllo for each..next è un costrutto per la ripetizione di script che esegue una o più istruzioni per ogni valore in un elenco le cui voci sono separate da virgole. Le istruzioni incluse nel ciclo fra for e next verranno eseguite per ogni valore nell'elenco.

Sintassi:  

Una sintassi speciale consente di generare elenchi contenenti nomi di file e di directory nella directory attuale.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Argomenti:  

Per ciascun argomento
Argomento Descrizione
var Il nome di una variabile di script che acquisisce un nuovo valore dall'elenco a ogni esecuzione del ciclo. Se var viene specificato dopo next, deve avere lo stesso nome di variabile rilevato dopo l'istruzione for each corrispondente.

Il valore della variabile var può essere modificato dalle istruzioni all'interno del ciclo, tuttavia l'utilizzo di questa procedura di programmazione non è consigliato.

Se all'interno del ciclo è presente una clausola exit for, l'esecuzione dello script verrà trasferita alla prima istruzione dopo la clausola next indicando quindi la fine del ciclo. Una clausola exit for può essere resa condizionale dall'utilizzo opzionale di un suffisso when o unless.

Nota informaticaPoiché for each..next è un'istruzione di controllo che termina con un punto e virgola o con un carattere di fine riga, ciascuna delle tre possibili clausole corrispondenti (for each, exit for e next) non deve superare la lunghezza limite di una riga.

Sintassi:  

list := item { , item }

item := constant | (expression) | filelist (mask) | dirlist (mask) | fieldvaluelist (fieldname)

 

Argomenti List
Argomento Descrizione
constant Qualsiasi numero o stringa. Tenere presente che una stringa inserita direttamente nello script deve essere racchiusa tra virgolette singole. Se la stringa non viene racchiusa tra virgolette singole, verrà interpretata come una variabile, pertanto verrà utilizzato il valore della variabile. Non è necessario che i numeri siano racchiusi tra virgolette singole.
expression Un'espressione arbitraria.
mask

Una maschera di un nome di file o di cartella che può includere un carattere qualsiasi di nome di file valido, così come i caratteri speciali standard, quali * e ?.

condition Un'espressione logica che restituisce un valore True o False.
statements Qualsiasi gruppo di una o più istruzioni dello script di licenza.
filelist mask

Questa sintassi restituisce un elenco con valori separati da virgole di tutti i file presenti nella directory attuale che presentano una corrispondenza con la maschera del nome di file.

dirlist mask

Questa sintassi restituisce un elenco con valori separati da virgole di tutte le cartelle incluse nella cartella attuale che presentano una corrispondenza con la maschera del nome di file.

fieldvaluelist mask Questa sintassi ripete i valori di un campo già caricato in licenza.
Nota di avvisoQlik Connettori provider storage web e altre connessioni DataFiles non supportano le maschere di filtro che utilizzano caratteri speciali (* e ?).

Esempio 1: Caricamento di un elenco di file

// LOAD the files 1.csv, 3.csv, 7.csv and xyz.csv for each a in 1,3,7,'xyz' LOAD * from file$(a).csv; next

Esempio 2: Creazione di un elenco di file sul disco

In questo esempio viene caricato un elenco di tutti i file correlati a licenza in una cartella.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvd' for each File in filelist (Root&'\*.' &Ext) LOAD '$(File)' as Name, FileSize( '$(File)' ) as Size, FileTime( '$(File)' ) as FileTime autogenerate 1; next File next Ext for each Dir in dirlist (Root&'\*' ) call DoDir (Dir) next Dir end sub call DoDir ('C:')

Esempio 3: Ripetizione dei valori di un campo

In questo esempio viene ripetuto l'elenco di valori caricati di FIELD e viene generato un nuovo campo NEWFIELD. Per ciascun valore di FIELD, verranno creati due record NEWFIELD.

load * inline [ FIELD one two three ]; FOR Each a in FieldValueList('FIELD') LOAD '$(a)' &'-'&RecNo() as NEWFIELD AutoGenerate 2; NEXT a

La tabella risultante avrà l'aspetto seguente:

Example 3
NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

Ulteriori informazioni

 

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!

Partecipa al programma Analytics Modernization

Remove banner from view

Modernizza senza compromettere le tue preziose app QlikView con il programma Analytics Modernization. Fare clic qui per maggiori informazioni o per contattarci: ampquestions@qlik.com