01 - Geavanceerde Expressies
In sessie 3 heb je eenvoudige expressies geleerd: velden combineren, vermenigvuldigen en IIF(). Nu breiden we dat uit met functies voor tekst, datums en getallen die je nodig hebt bij het bouwen van professionele rapporten.
Vergelijk de expressie-editor met een gereedschapskist: in sessie 3 had je een hamer en een schroevendraaier. Nu voegen we er een zaag, een waterpas en een meetlint aan toe.
Tekstfuncties
| Functie | Wat het doet | Voorbeeld | Resultaat |
|---|---|---|---|
Left(tekst, n) | Eerste n tekens | {Left(PackingSlip.Customer.Name, 3)} | Bak |
Right(tekst, n) | Laatste n tekens | {Right(PackingSlip.Code, 4)} | 0042 |
Mid(tekst, start, n) | Deel uit het midden | {Mid(PackingSlip.Code, 2, 4)} | 0042 |
Trim(tekst) | Verwijdert spaties aan begin en einde | {Trim(PackingSlip.Customer.Name)} | Bakkerij de Zon |
Replace(tekst, oud, nieuw) | Vervangt tekst | {Replace(PackingSlip.DeliveryAddress.Phone, "-", "")} | 0612345678 |
ToUpperCase(tekst) | Alles in hoofdletters | {ToUpperCase(PackingSlip.DeliveryAddress.City)} | UTRECHT |
Datumfuncties
| Functie | Wat het doet | Voorbeeld | Resultaat |
|---|---|---|---|
Today | Datum van vandaag | {Today} | 2024-03-15 |
DateDiff(d1, d2) | Verschil in dagen | {DateDiff(PackingSlip.DeliveryDate, Today)} | 7 |
AddDays(datum, n) | Datum plus n dagen | {AddDays(PackingSlip.DeliveryDate, 30)} | 2024-04-14 |
Year(datum) | Jaartal | {Year(PackingSlip.DeliveryDate)} | 2024 |
Month(datum) | Maandnummer | {Month(PackingSlip.DeliveryDate)} | 3 |
Day(datum) | Dagnummer | {Day(PackingSlip.DeliveryDate)} | 15 |
Getalfuncties
| Functie | Wat het doet | Voorbeeld | Resultaat |
|---|---|---|---|
Round(getal, n) | Afronden op n decimalen | {Round(Lines.Price * 1.21, 2)} | 5.45 |
Abs(getal) | Absolute waarde | {Abs(Lines.Amount)} | 150.00 |
Ceiling(getal) | Naar boven afronden | {Ceiling(Lines.Weight)} | 5 |
Floor(getal) | Naar beneden afronden | {Floor(Lines.Weight)} | 4 |
Functies combineren
Je kunt functies in elkaar nesten. Een veelvoorkomend patroon:
{Format("{0:dd MMMM yyyy}", AddDays(PackingSlip.DeliveryDate, 30))} Dit berekent de datum 30 dagen na de leverdatum en toont die als 14 april 2024. Je combineert hier een datumfunctie (AddDays) met een opmaakfunctie (Format).
Nog een voorbeeld — een betaaltermijn op een factuur:
Uiterste betaaldatum: {Format("{0:dd-MM-yyyy}", AddDays(Invoice.InvoiceDate, 30))} ReflexBlue-functies
Naast de standaard Stimulsoft-functies biedt ReflexBlue een set eigen functies. Je vindt ze in het woordenboek onder Functies > ReflexBlue. Hier de belangrijkste:
| Functie | Wat het doet | Voorbeeld |
|---|---|---|
Coalesce(val1, val2, ...) | Geeft de eerste niet-lege waarde terug | {Coalesce(PackingSlip.Customer.MainEmailAddress, "Geen e-mail")} |
AreDatesEqual(d1, d2) | Vergelijkt twee datums (negeert tijdsdeel) | {IIF(AreDatesEqual(PackingSlip.DeliveryDate, Today), "Vandaag", "")} |
ISOWeek(datum) | Weeknummer volgens ISO 8601 | {ISOWeek(PackingSlip.DeliveryDate)} → 12 |
Filter(bo, expressie, kolom) | Zoekt in een business object en geeft de kolomwaarde van de eerste match terug | {Filter(Lines, "Article.Code==\"1001\"", "Description")} |
Translate(bo, kolom, taal) | Vertaalt een kolom van een business object | {Translate(Lines.Article, "Description", Language)} |
VatToDutch(type) | BTW-type naam in het Nederlands | {VatToDutch(Lines.VatType)} → Hoog tarief |
Er zijn ook VatToFrench(), VatToGerman() en VatToSpanish() voor meertalige facturen.
Twee gespecialiseerde functies voor het verdelen van waarden over meerdere pagina’s:
| Functie | Wat het doet |
|---|---|
Chunk(waarde, chunkGrootte, paginaNummer) | Verdeelt een waarde over pagina’s (bijv. 10 / chunk 3 = 3, 3, 3, 1) |
ToRatio(ratio, waarde, chunkGrootte, paginaNummer) | Berekent een proportionele waarde verdeeld over pagina’s |
De expressie-editor als hulpmiddel
Bij complexe expressies is de expressie-editor je beste vriend:
- Links zie je alle beschikbare functies, gegroepeerd per categorie (inclusief de ReflexBlue-functies)
- Rechts zie je alle velden uit het woordenboek
- De editor geeft syntax-highlighting en foutmeldingen
Dubbelklik op het tekstvak en klik op Expressie om de editor te openen.
Samenvatting
- Tekstfuncties:
Left(),Right(),Mid(),Trim(),Replace(),ToUpperCase() - Datumfuncties:
Today,DateDiff(),AddDays(),Year(),Month(),Day() - Getalfuncties:
Round(),Abs(),Ceiling(),Floor() - ReflexBlue-functies:
Coalesce(),AreDatesEqual(),ISOWeek(),Filter(),Translate(),VatToDutch() - Functies kun je nesten: combineer berekening + opmaak in één expressie
- De expressie-editor helpt bij complexe expressies
Meer in deze rubriek
- 01 - Geavanceerde Expressies
- 02 - Oefening Geavanceerde Expressies
- 03 - Berekende Velden
- 04 - Oefening Berekeningen
- 05 - Systeemvariabelen
- 06 - Oefening Systeemvariabelen
- 07 - Subrapporten
- 08 - Oefening Subrapporten
- 09 - Afdrukken en Exporteren
- 10 - Oefening Exporteren
- 11 - Factuur Bouwen
- 12 - Oefening Factuur