# When

Met het prefix en suffix when maakt u een conditionele clausule waarmee wordt bepaald of een opdracht of exit-clausule wel of niet moet worden uitgevoerd. De opdracht kan worden beschouwd als een compact alternatief voor een volledige if..end if-opdracht.

Syntaxis:

(when condition statement | exitstatement when condition )

Retourgegevenstypen: Booleaanse waarde

In Qlik Sense wordt de booleaanse waarde Waar vertegenwoordigd door -1 en de waarde Onwaar door 0.

De statement of de exitstatement wordt alleen uitgevoerd als de voorwaarde resulteert in True.

Het prefix `When` kan worden gebruikt bij opdrachten die al een of meer andere opdrachten bevatten, inclusief aanvullende prefixen `When` of `Unless`.

Wanneer gebruikt u het prefix When

De `When`-opdracht retourneert een booleaanse waarde. Dit type functie wordt doorgaans gebruikt als een voorwaarde wanneer de gebruiker delen van een script wil laden of uitsluiten.

Argumenten

| Argument | Beschrijving |
| --- | --- |
| condition | Een logische uitdrukking die resulteert in TRUE of FALSE |
| statement | Elke Qlik Sense-scriptopdracht behalve besturingsopdrachten. |
| exitstatement | Een exit for-, exit do- of exit sub-clausule of een exit script-opdracht. |

## Landinstellingen

Tenzij anders aangegeven, wordt in de voorbeelden in dit onderwerp de volgende datumindeling gebruikt: MM/DD/YYYY. De datumopmaak wordt opgegeven in de opdracht `SET DateFormat` in uw script voor het laden van gegevens. De standaard datumindeling is mogelijk anders op uw systeem vanwege landinstellingen en andere factoren. U kunt de indelingen in de voorbeelden wijzigen zodat deze aansluiten op uw behoeften. Of u kunt de indelingen in uw load-script wijzigen zodat ze overeenkomen met deze voorbeelden. Ga voor meer informatie naar [Regionale instellingen voor applicaties en scripts aanpassen](https://help.qlik.com/nl-NL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Standaard landinstellingen in applicaties zijn gebaseerd op het gebruikersprofiel. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Cloud. Qlik Cloud wordt weergegeven in dezelfde taal als de browser die u gebruikt.

Als u een applicatie-ontwikkelaar bent, kunt u de standaardregio instellen voor applicaties die u maakt. Ga voor meer informatie naar [Instellen van uw voorkeur voor regionale instellingen voor het maken van apps en scripts in Qlik Cloud Analyse](https://help.qlik.com/nl-NL/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

Voorbeelden van functies

| Voorbeeld | Resultaat |
| --- | --- |
| ` exit script when A=1;  ` | Wanneer de uitdrukking `A=1` resulteert in TRUE, wordt het script beëindigd. |
| `when A=1 LOAD * from myfile.csv;` | Wanneer de uitdrukking `A=1` resulteert in TRUE, wordt het bestand `myfile.csv` geladen. |
| `when A=1 unless B=2 drop table Tab1;` | Wanneer de opdracht `A=1` resulteert in TRUE en als `B=2` resulteert in FALSE, dan wordt de `Tab1`-tabel verwijderd. |

## Voorbeeld 1 – When-prefix

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.htm)

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een gegevensverzameling met datums en bedragen die naar de tabel `Transactions` wordt gestuurd.

* De `Let`-opdracht die aangeeft dat de variabele `A` is gemaakt en de waarde `1` heeft.

* De `When`-voorwaarde levert de voorwaarde dat als `A` gelijk is aan `1`, het script zal blijven laden.

Load-script

```
LET A = 1; 

WHEN A = 1 
 
Transactions: 
LOAD  
*  
Inline [ 
id, date, amount 
1, 08/30/2018, 23.56 
2, 09/07/2018, 556.31 
3, 09/16/2018, 5.75 
4, 09/22/2018, 125.00 
5, 09/22/2018, 484.21 
6, 09/22/2018, 59.18 
7, 09/23/2018, 177.42 
]; 
```

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:

* `id`
* `date`
* `amount`

Resultatentabel

| id | date | amount |
| --- | --- | --- |
| 1 | 08/30/2018 | 23.56 |
| 2 | 09/07/2018 | 556.31 |
| 3 | 09/16/2018 | 5.75 |
| 4 | 09/22/2018 | 125.00 |
| 5 | 09/22/2018 | 484.21 |
| 6 | 09/22/2018 | 59.18 |
| 7 | 09/23/2018 | 177.42 |

Omdat variabele `A` is toegewezen aan de waarde `1` aan het begin van het script, wordt de voorwaarde na het `When`-prefix beoordeeld en wordt het resultaat TRUE geretourneerd. Vanwege het resultaat TRUE, blijft het script de load-instructie uitvoeren. Alle records uit de resultatentabel worden weergegeven.

Als deze variabelewaarde was ingesteld op niet-gelijk aan `1`, dan zouden er geen gegevens in het gegevensmodel worden geladen.

## Voorbeeld 2 – When-suffix

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.htm)

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Drie gegevenssets met datums en bedragen die naar de tabel `Transactions` worden gestuurd.

  * De eerste gegevensset bevat transacties 1-7.

  * De tweede gegevensset bevat transacties 8-14.

  * De derde gegevensset bevat transacties 15-21.

* Een `When`-voorwaarde die bepaalt of de tabel `Transactions` meer dan tien rijen bevat. Als een van de `When`-opdrachten resulteren in TRUE, wordt het load-script beëindigd. Deze voorwaarde wordt aan het eind van elk van de drie gegevenssets geplaatst.

Load-script

```
Transactions: 
LOAD  
*  
Inline [ 
id, date, amount 
1, 08/30/2018, 23.56 
2, 09/07/2018, 556.31 
3, 09/16/2018, 5.75 
4, 09/22/2018, 125.00 
5, 09/22/2018, 484.21 
6, 09/22/2018, 59.18 
7, 09/23/2018, 177.42 
]; 
 
exit script when NoOfRows('Transactions') > 10 ; 

Concatenate
LOAD 
*  
Inline [ 
id, date, amount 
8, 10/01/2018, 164.27 
9, 10/03/2018, 384.00 
10, 10/06/2018, 25.82 
11, 10/09/2018, 312.00 
12, 10/15/2018, 4.56 
13, 10/16/2018, 90.24 
14, 10/18/2018, 19.32 
]; 

exit script when NoOfRows('Transactions') > 10 ; 
 
Concatenate 
LOAD 
*  
Inline [ 
id, date, amount 
15, 10/01/2018, 164.27 
16, 10/03/2018, 384.00 
17, 10/06/2018, 25.82 
18, 10/09/2018, 312.00 
19, 10/15/2018, 4.56 
20, 10/16/2018, 90.24 
21, 10/18/2018, 19.32 
]; 
 
exit script when NoOfRows('Transactions') > 10 ; 
```

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:

* `id`
* `date`
* `amount`

Resultatentabel

| id | date | amount |
| --- | --- | --- |
| 1 | 08/30/2018 | 23.56 |
| 2 | 09/07/2018 | 556.31 |
| 3 | 09/16/2018 | 5.75 |
| 4 | 09/22/2018 | 125.00 |
| 5 | 09/22/2018 | 484.21 |
| 6 | 09/22/2018 | 59.18 |
| 7 | 09/23/2018 | 177.42 |
| 8 | 10/01/2018 | 164.27 |
| 9 | 10/03/2018 | 384.00 |
| 10 | 10/06/2018 | 25.82 |
| 11 | 10/09/2018 | 312.00 |
| 12 | 10/15/2018 | 4.56 |
| 13 | 10/16/2018 | 90.24 |
| 14 | 10/18/2018 | 19.32 |

Elk van de drie gegevenssets bevat zeven transacties. De eerste gegevensset bevat transacties 1 t/m 7 en wordt in de applicatie geladen. De `When`-voorwaarde na deze load-instructie resulteert in FALSE omdat er minder dan tien rijen in de `Transactions`-tabel staan. Het load-script gaat verder naar de volgende gegevensset.

De tweede gegevensset bevat transacties 8 t/m 14 en wordt in de applicatie geladen. De tweede `When`-voorwaarde resulteert in TRUE omdat er meer dan tien rijen in de `Transactions`-tabel staan. Daarom wordt het script beëindigd.

## Voorbeeld 3 – Meerdere When-prefixes

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/When.htm)

#### Load-script en resultaten

Overzicht

Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuwe sectie.

Het load-script bevat:

* Een gegevensset met één transactie wordt gemaakt als de tabel `Transactions`.

* Er wordt een `For`-lus geactiveerd die twee geneste `When`-voorwaarden bevat die resulteren in een van de volgende opties:

  1. Er staan minder dan `100` records in de `Transactions`-tabel.

  2. Het aantal records in de `Transactions`-tabel is geen veelvoud van `6`.

Load-script

```
RowsCheck = NoOfRows('Transactions') < 100 or mod(NoOfRows('Transactions'),6) <> 0;
Transactions: 
Load 
	0 as id 
Autogenerate 1; 
For i = 1 to 100 
	when(RowsCheck)
		Concatenate 
	Load 
		if(isnull(Peek(id)),1,peek(id)+1) as id 
	Autogenerate 7;     
next i 
```

Resultaten

Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie:

* `id`

De resultatentabel toont alleen de eerste vijf transactie-id's, maar het load-script maakt 36 rijen en wordt vervolgens beëindigd zodra aan de `When`-voorwaarde is voldaan.

Resultatentabel

| id |
| --- |
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| Nog 30 rijen |

De geneste `When`-voorwaarden in de `For`-lus resulteren in de volgende vragen:

* Staan er minder dan 100 rijen in de `Transactions`-tabel?

* Is het totale aantal records in de `Transactions`-tabel geen veelvoud van 6?

Wanneer beide `When`-voorwaarden een waarde van TRUE retourneren, worden er nog eens zeven records gegenereerd en aaneengeschakeld met de bestaande `Transactions`-tabel.

De `When`-voorwaarden retourneren vijf keer de waarde TRUE. Als dat gebeurt, zijn er in totaal 36 rijen gegevens in de `Transactions`-tabel.

Wanneer 36 rijen gegevens worden gemaakt in de `Transactions`-tabel, retourneert de tweede `When`-opdracht de waarde FALSE en wordt de load-instructie hierna niet meer uitgevoerd.