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:  

For each-argument
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.

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 (fieldname)

 

List-argument
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 ?.

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

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

dirlist mask

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

fieldvaluelist mask Syntaxen itererar genom värdena i ett fält som redan har laddats in i QlikView.
Anteckning om varningQlik Koppling till webblagringsleverantör 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 läser in en lista över alla QlikView-relaterade filer i en mapp.

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

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 3
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!

Gå med i programmet Analytics Modernization

Remove banner from view

Modernisera utan att kompromissa med dina värdefulla QlikView-appar med programmet för analysmodernisering. Klicka här för mer information eller ta kontakt: ampquestions@qlik.com