01 - Geneste Databanden
Je weet nu dat een master-detail relatie twee niveaus van herhaling heeft. In de designer vertaal je dit naar geneste databanden: twee databanden die via de eigenschap Hoofdcomponent aan elkaar gekoppeld zijn.
Hoe werkt het in de designer?
Anders dan je misschien verwacht, sleep je de detail-databand niet fysiek binnen de master-databand. In plaats daarvan:
- Zet je twee databanden onder elkaar op het canvas
- Geef je op de detail-databand aan welke databand het hoofdcomponent (master component) is
De koppeling zit dus in een eigenschap, niet in de visuele positie.
Stap voor stap: geneste databanden maken
Stap 1 — Master-databand toevoegen
- Ga naar Invoegen > DataBand
- Plaats de databand op het canvas
- Koppel aan het master-object (bijvoorbeeld
LineGroups)
Stap 2 — Mastervelden plaatsen
- Sleep velden van de master naar de databand (groepsnaam, type)
Stap 3 — Detail-databand toevoegen
- Ga opnieuw naar Invoegen > DataBand
- Plaats de nieuwe databand onder de master-databand
- Koppel aan het detail-object (bijvoorbeeld
LineGroups.Lines)
Stap 4 — Hoofdcomponent instellen
- Dubbelklik op de detail-databand (of selecteer en open Eigenschappen)
- Ga naar het tabblad Hoofdcomponent (Engels: Master Component)
- Selecteer daar de master-databand (bijvoorbeeld
DataBand3)
Je kunt het hoofdcomponent ook instellen via het Eigenschappen-paneel aan de rechterkant — daar staat het veld “Hoofdcomponent” met een dropdown.
Stap 5 — Detailvelden plaatsen
- Sleep de detailvelden naar de detail-databand (omschrijving, aantal, prijs)
Wat gebeurt er bij het genereren?
Stimulsoft verwerkt de databanden als volgt:
- Lees de eerste master-rij (LineGroup “Factuurregels”)
- Vul de mastervelden in
- Lees alle detail-rijen die bij deze master horen
- Herhaal de detail-databand voor elke detailregel
- Ga naar de volgende master-rij (LineGroup “Creditregels”)
- Herhaal stap 2-4
Het resultaat: elke groep verschijnt met een kopje, gevolgd door alleen de eigen regels.
Meerdere details bij één master
Je kunt meerdere detail-databanden aan dezelfde master koppelen. Stel dat een LineGroup zowel Lines als PackingSlips heeft: maak twee detail-databanden die allebei naar dezelfde master verwijzen.
Daarom stel je het hoofdcomponent in op de detail (niet op de master) — de detail wijst naar boven, zodat meerdere details naar dezelfde master kunnen verwijzen.
Afdrukken als detail leeg is
Wat als een master-rij geen detailregels heeft? Standaard wordt de master-rij dan niet getoond. Dit voorkomt lege kopjes.
Wil je de master-rij wel tonen (bijvoorbeeld om aan te geven dat er niets geleverd is), dan schakel je de eigenschap Afdrukken als detail leeg is in (Engels: Print If Detail Empty).
Waarschuwing: filteren bij meerdere details
Als je één master hebt met twee detail-databanden en je zet een filter op één van de details, kan dat filter ook invloed hebben op de andere detail-databand. Dit is een bekende eigenaardigheid van de engine. Houd hier rekening mee bij complexe opstellingen.
Voorbeeld: standaard verkoopfactuur
Open de standaard verkoopfactuur in de designer. Je ziet:
- Een databand die over
LineGroupsloopt (de master) - Daaronder een databand die over
LineGroups.Linesloopt (detail) - Bij de detail-databand staat als Hoofdcomponent de eerste databand ingesteld
Dit is de master-detail verhouding waarmee factuurregels per groep (proforma, credit, retour) worden getoond.
Samenvatting
- Geneste databanden staan onder elkaar op het canvas — niet fysiek genest
- De koppeling maak je via de eigenschap Hoofdcomponent op de detail-databand
- Meerdere details kunnen naar dezelfde master verwijzen
- Zonder detailregels wordt de master standaard niet getoond (instelbaar)
- Bekijk de standaard verkoopfactuur als referentie-voorbeeld