Select expressie

Voorbeeld

Een select expressie selecteert gegevens uit een bron van gegevens, bijvoorbeeld:

[select $[nummer], $[naam] from table("DIEREN") end]

De bron van gegevens is in dit geval een tabel met de naam "DIEREN". De tabel kan vanuit een Excel werkblad ingeladen worden. In dit het voorbeeld gaat het om de volgende gegevens:

nummer:integer soort:string naam:string aantalpoten:integer
1 hond Pluto 4
2 kat Felix 4
3 hond Bas 3
4 slang Sissie 0
5 slang Coby 0

De select levert als gegevens op:

nummer naam
1 Pluto
2 Felix
3 Bas
4 Sissie
5 Coby

Naast de select expressie is er ook een selectone expressie, die maximaal één waarde teruggeeft. Dit staat in de de zie ook lijst.

Letterlijke paden, formulierpaden

De select maakt gebruik van de letterlijke paden $[nummer] en $[naam]. Een letterlijk pad is een pad dat begint met $. De $ geeft aan dat het pad (in dit geval) een kolom specificeert, en dat het niet gaat om een waarde uit het onderhanden formulier wat met [nummer] of [naam] aangeduid zou worden.

Het letterlijk pad kan een pad zijn zoals $[soort/naam].

In een expressie kunnen desgewenst zowel letterlijke paden als formulierpaden gebruikt worden. Als het de bedoeling is gebruik te maken van een formulierwaarde gebruik dan [nummer], [naam] of iets dergelijks.

Onderdelen van de select

De algemene vorm van een select expressie is:

select ... from ... where ... order by ... end

De onderdelen van de select zijn:

  • De selectielijst, $[nummer], $[naam] in het voorbeeld.
  • De bron van de gegevens, table("DIEREN") in het voorbeeld.
  • Een optioneel where, met selectiecriteria, bijvoorbeeld where $[aantalpoten]=4.
  • Een optionele order by, voor de sortering, bijvoorbeeld order by $[naam].

De onderdelen van de select volgen de Smartforms notatie, bijvoorbeeld de notatie van de bron van de gegevens volgt de notatie van een Smartforms functieaanroep.

Waar mogelijk kunnen Smartforms expressies in de onderdelen staan, bijvoorbeeld where $[aantalpoten]=3 + 1 of where $[aantalpoten]=3 or $[aantalpoten]=4.

De selectielijst

De voorbeeldselect levert een tabel van twee kolommen en vijf rijen op. In veel gevallen levert een expressie een enkelvoudige waarde op, waarmee verder gerekend kan worden in de omvattende expressie. Een toepassing van het tabelresultaat is gebruik in een lijst control, bijvoorbeeld een keuzelijst of aanvinklijst. Zo'n control verwacht value-label paren: per keuze een value voor de unieke identificatie van de keuze, en een label voor de presentatie aan de gebruiker. De kolommen van de select kunnen als volgt de juiste naam krijgen:

[select value: $[nummer], label: $[naam] from table("DIEREN") end]

Voor de presentatiewaarde is het mogelijk een Smartforms expressie te gebruiken. Niet alle expressies zijn momenteel mogelijk, wel worden de mogelijkheden uitgebreid. De presentatieexpressie kan bijvoorbeeld zijn: label: $[naam] + " (" + $[soort] +" met " + $[aantalpoten] + " poten)". Dit levert op:

value label
1 Pluto (hond met 4 poten)
2 Felix (kat met 4 poten)
3 Bas (hond met 3 poten)
4 Sissie (slang met 0 poten)
5 Coby (slang met 0 poten)

De order by

De order by specificeert de sorteervolgorde: oplopend gesorteerd op de eerste genoemde kolom, hierbinnen oplopend gesorteerd op de tweede kolom, enzovoort. Met desc: kan de volgorde per kolom aflopend gemaakt worden. Gebruik van asc: of weglaten hiervan is equivalent.

order by desc: $[aantalpoten], asc: $[naam]

Gebruik in de  order by de paden zoals aanwezig in de brongegevens: $[nummer], $[soort], $[naam] en/of $[aantalpoten], en niet de namen value en label die in de selectielijst zijn genoemd.

Zie ook