For..next
Instrukcja sterowania for..next to rodzaj iteracji skryptu z licznikiem. Dla każdej wartości zmiennej licznika mieszczącej się w określonym limicie wykonane zostaną instrukcje wewnątrz pętli między wartościami for i next (z tymi wartościami włącznie).
Składnia:
For counter = expr1 to expr2 [ step expr3 ]
[statements]
[exit for [ ( when | unless ) condition ]
[statements]
Next [counter]
Wyrażenia expr1, expr2 i expr3 są oceniane tylko przy pierwszym wejściu do pętli. Wartość zmiennej counter można zmienić przy użyciu instrukcji wewnątrz pętli, ale nie jest to zalecana praktyka programowania.
Jeśli wewnątrz pętli napotkana zostanie klauzula exit for, wykonanie skryptu zostanie przeniesione do pierwszej instrukcji po klauzuli next wskazującej na koniec pętli. Klauzula exit for może zostać ustawiona jako warunkowa przez opcjonalne użycie sufiksu when lub unless.
Argumenty:
Argument | Opis |
---|---|
counter | Nazwa zmiennej. Jeśli argument counter określono po argumencie next, musi on mieć taką samą nazwę zmiennej jak nazwa po for. |
expr1 | Wyrażenie określające pierwszą wartość zmiennej counter, dla której pętla powinna zostać wykonana. |
expr2 |
Wyrażenie określające maksymalną wartość zmiennej counter, dla której pętla powinna zostać wykonana. |
expr3 | Wyrażenie określające wartość wskazującą na przyrost zmiennej counter podczas każdego wykonania pętli. |
condition | wyrażenie logiczne, którego ocena zwraca True lub False. |
statements | Dowolna grupa zawierająca co najmniej jedną instrukcję skryptu QlikView. |
Przykład 1: Ładowanie sekwencji plików
// LOAD files file1.csv..file9.csv
for a=1 to 9
LOAD * from file$(a).csv;
next
Przykład 2: Ładowanie losowej liczby plików
W tym przykładzie zakładamy istnienie plików danych x1.csv, x3.csv, x5.csv, x7.csv i x9.csv. Ładowanie jest zatrzymywane w losowym punkcie przy użyciu warunku 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