Groeperingen, grafieken en subrapporten
Groeperen op een veld met een eigen koptekst en voettekst, optellen met aggregaten, grafieken op papier tekenen en een rapport in een ander rapport inbedden.
Een detailband op zichzelf kan alleen één rij per record afdrukken. Wat een lijst in een document verandert, zijn drie onderdelen: de groeperingen, die de lijst in blokken met een titel en een totaal opdelen; de grafieken, die samenvatten wat de lijst zegt; en de subrapporten, die een volstrekt andere gegevensverzameling in het document binnenbrengen.
We blijven bij het rapport Oportunidades por conta van de app Klantenbeheer.
Groeperingen
Een groepering deelt de lijst op telkens wanneer de waarde van een veld verandert. Elk niveau brengt twee eigen banden mee: een koptekst, die verschijnt wanneer de waarde verandert, en een voettekst, die verschijnt wanneer de waarde afloopt.
Dit is wat het document "elke account, met haar opportuniteiten eronder en het totaal aan het einde" maakt.
Een groepering maken
- Klik in de linkerkolom op de + van de sectie Groeperingen.
- Selecteer de band Koptekst: … die op het ontwerpvlak is verschenen.
- Kies in het paneel rechts, in de sectie Groepering, het Veld.

| Eigenschap | Wat die doet |
|---|---|
| Veld | "Veld van de hoofdgegevensset waarvan de waarde de groep bepaalt. De rijen worden erop gesorteerd." Accepteert paden met een punt om relaties te doorlopen: conta.nome. |
| Volgorde | Oplopend of Aflopend. |
| Koptekst herhalen | "Wanneer de groep op de volgende pagina doorloopt, komt de koptekst ervan opnieuw bovenaan." |
| Nieuwe pagina per groep | "Elke groep begint op een eigen pagina." Dat zet u aan om één factuur per vel af te drukken. |
De groepsbanden verschijnen op het ontwerpvlak ingeklemd rond het detail, met een inspringing die laat zien bij welk niveau ze horen. U kunt zoveel niveaus hebben als u wilt — per jaar, dan per klant, dan per factuur.
Dica
Een veld binnen een koptekst van een groep leest de groepsrij die als eerste komt. Dat is wat de naam van de account boven haar opportuniteiten laat verschijnen. Buiten de groepsbanden (in de koptekst van het rapport, bijvoorbeeld) is er geen enkele rij en komt het veld er leeg uit.
Totalen met het Aggregaat
Het element Aggregaat is een berekening die de motor uitvoert: Som, Gemiddelde, Aantal, Minimum of Maximum over een veld van een set.
Waar u het neerzet, bepaalt wat het telt:
| Waar het staat | Wat het optelt |
|---|---|
| In de voettekst van een groep | Alleen de rijen van die groep — het totaal van die account. |
| In de voettekst van het rapport | Alle rijen — het algemene totaal. |
| In de detailband, over een gekoppelde set | Alleen de rijen van die rij — het totaal van die factuur. |
Bij Aantal mag het veld leeg blijven: het telt rijen, geen waarden.
Grafieken
Een grafiek op papier gebruikt dezelfde motor en dezelfde opties als de grafiekwidget van de schermen. In de PDF wordt hij op de server getekend en komt hij in vectorvorm binnen, niet als afbeelding — een gerasterde grafiek zou bij het afdrukken of vergroten wazig worden.

Sleep Grafiek van het palet naar een band en stel hem in:

| Eigenschap | Opmerkingen |
|---|---|
| Type grafiek | Staven, Lijn, Vlak, Taart / Donut, Spreiding, Radar, Trechter, Gauge (meter) of Heatmap. |
| Gegevensset | Waar de rijen vandaan komen. Leeg gebruikt de hoofdgegevensset. |
| Categorieveld (X-as / segmenten) | "Veld dat de horizontale as (of de segmenten) bepaalt." |
| Waardevelden | "Numerieke velden om te tekenen. Zonder reeksveld is elk veld een reeks." U voegt ze toe met Waarde toevoegen. |
| Reeksveld (groepering) | "Veld dat de reeksen scheidt. Daarmee wordt er gepivoteerd op het eerste waardeveld." |
| Legenda en Positie van de legenda | Boven, Onder, Links of Rechts. |
| Waarden bij de punten | Schrijft het getal boven op elke staaf of elk punt. |
Afhankelijk van het type verschijnen ook nog Gestapeld, Vloeiende lijnen, Horizontaal en Binnenstraal van de donut (%).
In het voorbeeld heeft de grafiek in de Voettekst van het rapport de
categorie fase en de waarde valor: één staaf per fase van de pipeline, met
de som van de deals van elke fase.
Nota
Een grafiek in een groepsband tekent de gegevens van die groep — één grafiek per account. In een detailband zou hij één grafiek per afgedrukte rij tekenen, wat bijna nooit is wat u wilt.
Subrapporten
Een subrapport is een ander rapport dat binnen dit rapport is ontworpen. Het dient voor wat de groepering niet doet: de groepering deelt één set op; het subrapport brengt een hele andere binnen.
Het klassieke geval: op een rekening-courant de openstaande facturen en de betalingen — twee lijsten uit verschillende tabellen op hetzelfde vel. In ons voorbeeld brengt de koptekst van elke account de lijst met haar contactos mee, vóór de opportuniteiten.

Het onderliggende rapport ontwerpen
Het ingebedde rapport is een gewoon rapport, met een eigen leven — u opent, ontwerpt en bekijkt het als elk ander. Het verschil is dat het parameters declareert om de context te krijgen van wie het inbedt.

In het voorbeeld heeft Contactos da conta een parameter conta (Getal,
verplicht) en filtert zijn gegevensset conta_id op die parameter. De banden
die er in een ingebed document niet toe doen — koptekst van de pagina,
voetteksten — blijven uitgeschakeld.
Inbedden
- Sleep Subrapport van het palet naar een koptekst, een voettekst of een groepsband.
- Kies bij Kies het rapport het onderliggende rapport.
- Zeg voor elke parameter ervan waar het vandaan komt: Veld van de rij (leest het veld van de rij waarop het subrapport staat) of Vaste waarde.
Atenção
Een subrapport mag niet in de detailband staan, en dat wordt belet, niet afgeraden: "het zou één query per afgedrukte rij doen" — duizend facturen, duizend gangen naar de database. Zet het in een koptekst, in een voettekst of in een groepsband, waar de gevallen schaars zijn.
Herhalingen met dezelfde parameters delen de leesbeurt, dus een subrapport in de koptekst van een groep kost één query per groep, niet per rij.
Streepjescodes en afbeeldingen
Twee elementen die een zakelijk document compleet maken:
Streepjescode — de waarde kan uit een veld komen (het normale geval op een factuur) of vast zijn:
| Veld | Opmerkingen |
|---|---|
| Type | Code 128 accepteert tekst en cijfers. EAN-13 zijn 12 of 13 cijfers en het controlecijfer wordt geverifieerd. QR accepteert elke tekst — dat is de code van de facturen. |
| Veld | "Veld met de waarde die gecodeerd moet worden. Leeg gebruikt de vaste waarde hieronder." |
| Vaste waarde | Alleen gebruikt wanneer er geen veld is gekozen. |
| De waarde tonen | Drukt de waarde onder de strepen af (geldt niet voor QR). |
Afbeelding — de Bron bepaalt waar zij vandaan komt:
| Bron | Wat u invult |
|---|---|
| Bestand van de app | Een bestand dat in de app is geüpload (bijvoorbeeld icons/logo.svg). |
| Adres | Een URL. |
| Veld uit de gegevens | "Veld met de afbeelding: een URL, een pad onder assets, of de binaire inhoud in base64." |
De Schaling bepaalt wat er gebeurt wanneer de afbeelding niet de vorm van het kader heeft: Passend, Vullen of Uitrekken.
Veelgestelde vragen
De groep groepeert niets — alles komt achter elkaar. Het veld van de groepering moet uit de hoofdgegevensset komen, en de rijen worden erop gesorteerd. Is het veld in veel rijen leeg, dan vallen die rijen allemaal in dezelfde groep.
Het totaal van de groep telt alles op. Het aggregaat staat buiten de band van de groep. Zet het in de voettekst van die groep — de positie bepaalt het bereik van de berekening.
De grafiek komt er blanco uit in de PDF maar hij is te zien in het ontwerp. Op het ontwerpvlak toont een grafiek zonder gegevens een voorbeeldsteekproef. In de PDF is er alleen wat de gegevens geven: controleer de Gegevensset, het Categorieveld en of er ten minste één Waardeveld gekozen is.
Kan ik een subrapport in een ander subrapport zetten? Ja, met dezelfde regel: nooit in de detailband. Maar denk twee keer na — twee niveaus van inbedding maken het document lastig te voorspellen, en vaak was wat u wilde gewoon nog een niveau van groepering.