07 - Groepering
Je kunt nu data herhalen in een databand en zelfs meerdere niveaus nesten. Maar wat als je de data wilt organiseren — bijvoorbeeld alle producten groeperen per categorie, of alle orders per klant?
Dat doe je met groepering. Vergelijk het met sorteren van post in vakjes: je verdeelt de brieven (databandrijen) over vakjes (groepen), en elk vakje krijgt een etiket (GroupHeader) en eventueel een samenvatting (GroupFooter).
Wat doet groepering?
Groepering voegt twee nieuwe secties toe rond een databand:
┌─────────────────────────────────────┐
│ GroupHeader (1x per groep) │
│ Groepsnaam, bijv. "Meel" │
├─────────────────────────────────────┤
│ DataBand (herhaalt per rij) │
│ Tarwebloem 50 │
│ Roggebloem 20 │
│ Speltbloem 15 │
├─────────────────────────────────────┤
│ GroupFooter (1x per groep) │
│ Subtotaal: 85 │
├─────────────────────────────────────┤
│ GroupHeader (volgende groep) │
│ "Suiker en zoetstof" │
├─────────────────────────────────────┤
│ DataBand │
│ Kristalsuiker 100 │
│ Vanillesuiker 25 │
├─────────────────────────────────────┤
│ GroupFooter │
│ Subtotaal: 125 │
└─────────────────────────────────────┘ GroupHeader vs. GroupFooter
| Sectie | Verschijnt | Typisch gebruik |
|---|---|---|
| GroupHeader | Eenmalig vóór elke groep | Groepsnaam, groepstitel |
| GroupFooter | Eenmalig ná elke groep | Subtotaal, aantal items in de groep |
Je kunt ze onafhankelijk gebruiken — een GroupHeader zonder GroupFooter is prima als je geen subtotalen nodig hebt.
Groepering vs. geneste databanden
Dit zijn twee verschillende technieken die op elkaar lijken maar anders werken:
| Geneste databanden | Groepering | |
|---|---|---|
| Wanneer | Twee aparte niveaus in het business object (Order → Regels) | Eén lijst die je wilt opdelen (producten opdelen per categorie) |
| Databronnen | Twee verschillende business objects | Eén business object met een groepeerveld |
| Canvas | DataBand in DataBand | GroupHeader + DataBand + GroupFooter |
Vuistregel: als de niveaus al in de boomstructuur zitten, gebruik geneste databanden. Als je een platte lijst wilt opdelen, gebruik groepering.
Een concreet voorbeeld
Een leverancier levert de volgende producten:
| Product | Categorie | Aantal |
|---|---|---|
| Tarwebloem | Meel | 50 |
| Roggebloem | Meel | 20 |
| Kristalsuiker | Suiker | 100 |
| Vanillesuiker | Suiker | 25 |
Zonder groepering: één lange lijst van vier rijen. Met groepering op Categorie: twee groepen (“Meel” en “Suiker”), elk met hun eigen rijen en optioneel een subtotaal.
Samenvatting
- Groepering verdeelt een databand in groepen op basis van een veld
- GroupHeader verschijnt vóór elke groep, GroupFooter erna
- Gebruik groepering om een platte lijst op te delen — gebruik geneste databanden als de niveaus al in het business object zitten
- Vergelijk het met post sorteren in vakjes: elk vakje krijgt een etiket en een samenvatting
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