For..next
Kontrollsatsen for..next är en konstruktion för skriptiteration med en räknevariabel. Satserna inom slingan som innesluts av for och next exekveras för varje värde i räknevariabeln mellan (och inklusive) angivna övre och undre gränser.
Syntax:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
Uttrycken expr1, expr2 och expr3 utvärderas bara första gången slingan påbörjas. Värdet på räknevariabeln kan ändras av satser inom slingan, men detta brukar inte göras inom programmering.
Om en exit for-sats påträffas i slingan flyttas skriptexekveringen till den första satsen efter next-satsen som markerar slutet på slingan. En exit for-sats kan göras villkorad genom det valbara användandet av ett when- eller unless-suffix.
Argument:
Argument | Beskrivning |
---|---|
counter | Ett variabelnamn. Om counter anges efter next, måste variabelnamnet överensstämma med det variabelnamn som angivits efter motsvarande for. |
expr1 | Ett uttryck som anger det första värdet i counter för vilket slingan ska exekveras. |
expr2 |
Ett uttryck som anger det maximala värdet i den counter-variabel för vilken slingan ska exekveras. |
expr3 | Ett uttryck som anger hur många steg värdet i counter ska öka varje gång slingan exekverats. |
condition | Ett logiskt uttryck som utvärderas till True eller False. |
statements | Valfri grupp av en eller flera QlikView-skriptsatser. |
Exempel 1: Läsa in ett antal filer i följd
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
Exempel 2: Läsa in valfritt antal filer i
I detta exempel utgår vi från datafilerna x1.csv, x3.csv, x5.csv, x7.csv och x9.csv. Inläsningen stoppas vid valfri punkt med hjälp av villkoret if rand( )<0.5 then.
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