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:

  1. Als de waarde het woord false of true is dan is het type boolean.
  2. Als de waarde een geheel getal is met of zonder teken dan is het type integer.
  3. Als de waarde een getal met een fractie is dan is het type double.
  4. Als de waarde een datum is of een datum plus tijd is dan is het type datetime.
  5. 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
  • Smartforms maakt hier en elders geen onderscheid tussen hoofd- en kleine letters.
  • Een waarde "0" of "1" is géén boolean.
2 Integer
  • Een getal met een fractie is geen integer, ook niet als de fractie 0 is zoals in "1234.0".
3 Double
  • De fractie begint met een punt, niet met een komma.
  • Er zijn geen punten of komma's voor de duizendtallen.
  • Een teken is optioneel.
  • Een exponent wordt momenteel niet ondersteund.
4 DateTime
  • Het basisformaat is "2016-03-16" voor een datum of "2016-03-16 10:51:59" voor een datum/tijd.
  • Een maand kan bestaan uit één cijfer. Een dag kan bestaan uit één cijfer.
  • In plaats van een spatie kan datum en tijd ook gescheiden worden met "t" of "T".
  • Er zijn mogelijkheden voor het specificeren van een tijdzone. Zonder die specificatie wordt de lokale tijd aangenomen.
5 String
  •  Als geen ander type van toepassing is dan is het type string, wat altijd mogelijk is.

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.

Zie ook