For..next
Der Steuerungsbefehl for..next ist eine Skriptiteration mit einem Zähler. Für jeden Zähler innerhalb (und einschließlich) der festgelegten Grenzen werden die Befehle innerhalb der Schleife, die durch forund next eingeschlossen sind, jeweils einmal ausgeführt.
Syntax:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
Die Formeln expr1, expr2 und expr3 werden nur beim ersten Durchlauf der Schleife ausgewertet. Der Wert des Zählers kann durch Befehle innerhalb der Schleife geändert werden, dies ist aber nicht empfehlenswert.
Steht in der Schleife eine exit for-Bedingung, wird die Ausführung des Skripts beim ersten Befehl nach der Schleife, d. h. nach der Zeile mit dem abschließenden next, fortgesetzt. Auf exit for kann verzichtet werden, wenn stattdessen when oder unless verwendet wird.
Argumente:
Argument | Beschreibung |
---|---|
counter | Ein Variablenname. Ist counter nach next festgelegt, muss sie denselben Variablennamen haben, wie den hinter dem zugehörigen for. |
expr1 | Eine Formel, deren Ergebnis den ersten Wert der Variable counter ergibt, für welche die Schleife ausgeführt wird. |
expr2 |
Eine Formel, deren Ergebnis den maximalen Wert der Variable counter ergibt, für welche die Schleife ausgeführt wird. |
expr3 | Eine Formel, deren Ergebnis den Zuwachs von counter ergibt, um den sich der Zähler bei jedem Durchlauf der Schleife erhöht. |
condition | Eine logische Formel, die True oder False ergibt. |
statements | Jede Gruppe von einem oder mehreren QlikView-Skriptbefehlen. |
Beispiel 1: Laden einer Reihe von Dateien
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
Beispiel 2: Laden einer zufälligen Zahl von Dateien
In diesem Beispiel werden die Datendateien x1.csv, x3.csv, x5.csv, x7.csv und x9.csv angenommen. Der Ladevorgang wird an zufällig ausgewählten Punkten mit der Bedingung if rand( )<0.5 then gestoppt.
for counter=1 to 9 step 2
set filename=x$(counter).csv;
if rand( )<0.5 then
exit for unless counter=1
end if
LOAD a,b from $(filename);
next