For each..next

Kontrollsatsen for each..next är en konstruktion för skriptiteration som exekverar en eller flera satser för varje värde i en kommaavgränsad lista. Satserna inom slingan som innesluts av for och next exekveras för varje värde i listan.

Syntax:  

En speciell syntax gör det möjligt att generera listor med namn på filer och mappar i den aktuella mappen.

for each var in list

[statements]

[exit for [ ( when | unless ) condition ]

[statements]

next [var]

Arguments:  

Argument Beskrivning
var Namnet på en skriptvariabel som får ett nytt värde från lista för varje exekvering av slingan. Om var anges efter next, måste variabelnamnet överensstämma med det variabelnamn som angivits efter motsvarande for each.

Värdet på variabeln var 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.

Observera: Eftersom for each..next-satsen är en kontrollsats, och som sådan slutar med ett semikolon eller radslut, måste var och en av dess tre möjliga komponenter (for each, exit for och next) rymmas på en egen rad i skriptet.

Syntax:  

list := item { , item }

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

 

Argument Beskrivning
constant Valfritt tal eller valfri sträng Observera att en sträng som skrivs direkt i skriptet måste omslutas av enkla citattecken. En sträng utan enkla citattecken tolkas som en variabel och då används värdet för variabeln. Tal behöver inte omslutas av enkla citattecken.
expression Ett godtyckligt uttryck.
mask

En fil- eller katalognamnsmask som får innehålla valfria giltiga filnamnstecken samt standardjokertecknen * och ?.

Du kan använda absoluta sökvägar eller sökvägar till lib://.

condition Ett logiskt uttryck som utvärderas till True eller False.
statements Valfri grupp av en eller flera Qlik Sense-skriptsatser.
filelist mask

Denna syntax skapar en kommaavgränsad lista över alla filer i den aktuella mappen som matchar filnamnsmasken.

Observera: Argumentet har enbart stöd för bibliotekskopplingar i standardläget. Se Behörighetskontroll för filsystem
dirlist mask

Denna syntax skapar en kommaavgränsad lista över alla kataloger i den aktuella katalog som matchar mappnamnsmasken.

Observera: Argumentet har enbart stöd för bibliotekskopplingar i standardläget. Se Behörighetskontroll för filsystem
fieldvaluelist mask Syntaxen itererar genom värdena i ett fält som redan har laddats in i Qlik Sense.

Example 1: Ladda en fillista

// 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

Example 2: Skapa en fillista på disk

Detta exempel laddar en lista över alla Qlik Sense-relaterade filer i en mapp.

sub DoDir (Root) for each Ext in 'qvw', 'qva', 'qvo', 'qvs', 'qvc', 'qvf', '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 ('lib://MyData')

Example 3: Itererar genom värdena i ett fält

Det här exemplet itererar genom listan med laddade värden för FIELD och genererar ett nytt fält, NEWFIELD. För varje värde i FIELD skapas två NEWFIELD-poster.

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

Den resulterande tabellen ser ut så här:

NEWFIELD
one-1
one-2
two-1
two-2
three-1
three-2

Hjälpte den här informationen?

Tack för att du berättar det här. Är det något du vill säga om det här avsnittet?

Varför var informationen inte till hjälp och hur kan vi förbättra den?