Gå till huvudinnehåll Gå till ytterligare innehåll

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]

Argument:  

Argument
ArgumentBeskrivning
varNamnet 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.

Anteckning om informationEftersom 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
ArgumentBeskrivning
constantValfritt 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.
expressionEtt 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://.

conditionEtt logiskt uttryck som utvärderas till True eller False.
statementsValfri 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.

Anteckning om informationArgumentet 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.

Anteckning om informationArgumentet har enbart stöd för bibliotekskopplingar i standardläget. Se Behörighetskontroll för filsystem
fieldvaluelist maskSyntaxen itererar genom värdena i ett fält som redan har laddats in i Qlik Sense.
Anteckning om varningQlik Web Storage Provider Connectors och andra DataFiles-kopplingar stöder inte filtermasker som använder jokertecken (* och ?).

Exempel 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

Exempel 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://DataFiles')

Exempel 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:

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

Mer information

 

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!