11 - Subtotalen
Je kunt nu data groeperen met een GroupHeader. Maar groepering wordt pas echt nuttig als je per groep een subtotaal kunt tonen — het totaal aantal, het totaalbedrag of het gemiddelde binnen die groep.
In sessie 3 heb je eenvoudige expressies geleerd. Nu voegen we daar aggregaatfuncties aan toe: functies die rekenen over meerdere rijen.
Aggregaatfuncties
Een aggregaatfunctie berekent een waarde over een reeks rijen in een databand. De belangrijkste:
| Functie | Wat het doet | Voorbeeld |
|---|---|---|
Sum() | Telt alle waarden op | {Sum(Regels.Aantal)} |
Count() | Telt het aantal rijen | {Count()} |
Avg() | Berekent het gemiddelde | {Avg(Regels.PrijsPerStuk)} |
Min() | Geeft de kleinste waarde | {Min(Regels.PrijsPerStuk)} |
Max() | Geeft de grootste waarde | {Max(Regels.PrijsPerStuk)} |
Subtotaal in de GroupFooter
Een subtotaal is een aggregaat dat alleen de rijen binnen de huidige groep telt. Je plaatst het in de GroupFooter:
- Voeg een tekstvak toe in de GroupFooter
- Typ de expressie, bijvoorbeeld:
Subtotaal: {Sum(Producten.Aantal)}
Stimulsoft berekent de som automatisch over alleen de rijen in de huidige groep. Bij de groep “Meel” telt hij alleen de meel-producten, bij “Suiker” alleen de suiker-producten.
Concreet voorbeeld
Data:
| Product | Categorie | Aantal |
|---|---|---|
| Tarwebloem | Meel | 50 |
| Roggebloem | Meel | 20 |
| Speltbloem | Meel | 15 |
| Kristalsuiker | Suiker | 100 |
| Vanillesuiker | Suiker | 25 |
Rapport met groepering op Categorie en subtotaal in de GroupFooter:
── Meel ─────────────────────
Tarwebloem 50
Roggebloem 20
Speltbloem 15
Subtotaal: 85
── Suiker ───────────────────
Kristalsuiker 100
Vanillesuiker 25
Subtotaal: 125 Eindtotaal in de ReportSummary
Naast subtotalen per groep wil je vaak ook een eindtotaal over alle groepen heen. Dat plaats je in de ReportSummary:
Eindtotaal: {Sum(Producten.Aantal)} Dezelfde functie Sum(), maar nu in de ReportSummary in plaats van de GroupFooter. Stimulsoft weet op basis van de sectie of het een subtotaal (per groep) of een eindtotaal (over alles) is.
Combineren van subtotaal en berekening
Je kunt aggregaatfuncties combineren met berekeningen:
{Sum(Regels.Aantal * Regels.PrijsPerStuk)} Dit berekent per rij het regeltotaal en telt die op tot een subtotaal. In de GroupFooter geeft dit het subtotaalbedrag per groep.
Samenvatting
- Aggregaatfuncties rekenen over meerdere rijen:
Sum(),Count(),Avg(),Min(),Max() - In de GroupFooter berekent een aggregaat het subtotaal per groep
- In de ReportSummary berekent dezelfde functie het eindtotaal over alle rijen
- Combineer aggregaten met berekeningen:
{Sum(Aantal * Prijs)}
Meer in deze rubriek
- 01 - Master-Detail relaties
- 02 - Oefening Master-Detail
- 03 - Geneste databanden
- 04 - Oefening Geneste Databanden
- 05 - Child Bands
- 06 - Oefening Child Bands
- 07 - Groepering
- 08 - Oefening Groepen Herkennen
- 09 - Groepering Instellen
- 10 - Oefening Groepering
- 11 - Subtotalen
- 12 - Oefening Subtotalen
- 13 - Sorteren
- 14 - Oefening Sorteren Groeperen
- 15 - Leverbon bouwen
- 16 - Oefening Leverbon