Type interpretatie
Tijdens het evalueren van een expressie zijn waarden getypeerd. Een waarde is bijvoorbeeld van het type string of van het type integer.
Uitgeschreven waarden in een Smartforms expressie
Een waarde die uitgeschreven in een Smartforms expressie staat is getypeerd:
- true of false: dit zijn waarden van het type boolean.
- 123: dit is een waarde van het type integer.
- 12.3: dit is een waarde van het type double.
- "abc": dit is een waarde van het type string.
- Er is geen notatie voor een datum of datumtijd. Minimaal is bijvoorbeeld nodig: datetime("2018-01-15").
Waarden afkomstig uit een bron buiten de Smartforms expressie
Een waarde is doorgaans niet getypeerd als die uit een formulier komt, of uit een Excel import, of uit een andere bron.
Smartforms past in dat geval een type interpretatie toe. Voor de waarde als string probeert Smartforms achtereenvolgens:
- Als de waarde het woord false of true is dan is het type boolean.
- Als de waarde een geheel getal is met of zonder teken dan is het type integer.
- Als de waarde een getal met een fractie is dan is het type double.
- Als de waarde een datum is of een datum plus tijd is dan is het type datetime.
- En anders is het type string.
Type interpretatie details
De type interpretatie bestaat uit het herkennen van een formaat voor één van de types, gevolgd door conversie van de string waarde naar de waarde in het gekozen type. De waarde gaat tenslotte getypeerd de verdere expressie evaluatie in.
De details voor het formaat van de types zijn:
Volgorde | Type | Details |
---|---|---|
1 | Boolean |
|
2 | Integer |
|
3 | Double |
|
4 | DateTime |
|
5 | String |
|
Type interpretatie onderdrukken
Smartforms past de type interpretatie standaard toe. Het is mogelijk de type interpretatie te onderdrukken met de raw(...) functie. Bijvoorbeeld length(raw([bsn])) geeft de lengte van een BSN uit een formulier zonder type interpretatie.
- length([bsn]): een BSN zoals 012345678 wordt gezien als het getal 12345678. De lengte van de stringwaarde van dat getal is 8.
- length(raw([bsn])): de BSN blijft de string 012345678 en de lengte van de string is 9.