# Unless

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

Syntaxis:

(Unless condition statement | exitstatement Unless condition )

De statement of de exitstatement wordt alleen uitgevoerd als de condition resulteert in False.

Het prefix unless kan worden gebruikt bij opdrachten die al een of meer andere opdrachten bevatten, inclusief aanvullende prefixen when of unless.

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

## Wanneer gebruiken

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

De volgende regels tonen drie voorbeelden van hoe de `Unless`-functie kan worden gebruikt:

`exit script 
 unless A=1;` `unless A=1 
 LOAD  * from myfile.csv;` `unless A=1 
 when B=2 drop table Tab1;`

## Landinstellingen

Tenzij anders aangegeven, wordt in de voorbeelden in dit onderwerp de volgende datumindeling gebruikt: MM/DD/JJJJ. 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.

Standaard landinstellingen in apps zijn gebaseerd op de regionale systeeminstellingen van de computer of server waarop Qlik Sense is geïnstalleerd. Als de Qlik Sense-server die u gebruikt is ingesteld op Zweden, gebruikt de editor voor laden van gegevens de Zweedse landinstellingen voor datums, tijd en valuta. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Sense. Qlik Sense wordt weergegeven in dezelfde taal als de browser die u gebruikt.

## Voorbeeld 1 – Unless-prefix

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/ScriptPrefixes/Unless.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:

* Het maken van variabele A, met een waarde van 1.

* Een gegevensverzameling die in de tabel Transacties wordt geladen, tenzij de variabele A = 2.

Load-script

```
LET A = 1;

UNLESS A = 2

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 `Unless`-prefix beoordeeld en wordt het resultaat `FALSE` geretourneerd. Het resultaat is dat het script de `Load`-opdracht blijft uitvoeren. In de resultatentabel worden alle records uit de `Transactions`-tabel weergegeven.

Als deze variabelewaarde is ingesteld op gelijk aan 2, dan worden er geen gegevens in het gegevensmodel geladen.

## Voorbeeld 2 – Unless-suffix

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

#### Load-script en resultaten

Overzicht

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

Het load-script begint met het laden van een eerste gegevensset in de tabel `Transactions`. Het script wordt vervolgens beëindigd tenzij er minder dan 10 records in de `Transactions`-tabel staan.

Als deze voorwaarde niet resulteert in de beëindiging van het script, wordt er nog een set met transacties aaneengeschakeld in de `Transactions`-tabel en wordt dit proces herhaald.

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

Er zijn zeven records in elk van de drie gegevenssets van het load-script.

De eerste gegevensset (met transactie `id` 1 t/m 7) wordt in de applicatie geladen. De voorwaarde `Unless` controleert of er minder dan 10 rijen in de tabel `Transactions` staan. Dit resulteert in `TRUE` en daarom wordt de tweede gegevensset (met transactie `id` 8 t/m 14) in de applicatie geladen. De tweede voorwaarde `Unless` controleert of er minder dan 10 records in de tabel `Transactions` staan. Dit resulteert in `FALSE` en dus wordt het script beëindigd.

## Voorbeeld 3 – Meerdere Unless-prefixes

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

#### Load-script en resultaten

Overzicht

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

In dit voorbeeld wordt een gegevensset met één transactie gemaakt als de tabel `Transactions`. Er wordt een for-lus geactiveerd waarin twee geneste unless-opdrachten het volgende controleren:

1. Tenzij (unless) er meer dan 100 records in de `Transactions`-tabel staan

2. Tenzij (unless) het aantal records in de `Transactions`-tabel een veelvoud is van 6

Als deze voorwaarden `FALSE` zijn, worden er nog eens zeven records gegenereerd en aaneengeschakeld met de bestaande `Transactions`-tabel. Dit proces wordt herhaald tot een van de twee transacties de waarde `TRUE` retourneert.

Load-script

```
Transactions:
Load
        0 as id
Autogenerate 1;

For i = 1 to 100
        unless NoOfRows('Transactions') > 100 unless mod(NoOfRows('Transactions'),6) = 0
                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`.

Resultatentabel

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

De geneste unless-opdrachten die optreden in de for-lus controleren het volgende:

1. Staan er meer dan 100 rijen in de `Transactions`-tabel?

2. Is het totale aantal records in de `Transactions`-tabel een veelvoud van 6?

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

Deze opdrachten retourneren vijf keer een waarde van `FALSE` waarna er in totaal 36 rijen gegevens in de `Transactions`-tabel staan.

Hierna retourneert de tweede `Unless`-opdracht een waarde van `TRUE`. Daarom wordt de load-instructie hierna niet meer uitgevoerd.