Gruppensummen ohne Gruppen im Berichtsfuß

Die Summen von Zahlen in bestimmten Feldern innerhalb von Gruppierungen zu ermitteln, ist kein Hexenwerk. Manchmal benötigen Kunden aber Spezialanforderungen, die sich mit üblichen Mitteln nicht mehr bewerkstelligen lassen. Zum Beispiel das Bilden von Gruppensummen ohne das Vorhandensein von Gruppen. Der vorliegende Beitrag zeigt, wie dies funktioniert.

Neulich erreichte mich die Anforderung, für eine Liste von Elementen bestimmter Kategorien die Anzahl der Elemente je Kategorie auszugeben – allerdings nicht im Rahmen einer Gruppierung im Gruppenfuß, sondern ohne Gruppierung im Seitenfuß. Konkret ging es um die Ausgabe von Präsenten für Mitarbeiter, wobei die Mitarbeiter nicht nach Präsent gruppiert, sondern nach Alphabet, Alter oder sonstigen Kriterien sortiert werden sollten. Prinzipiell soll der Bericht also wie in Bild 1 aussehen.

pic001.png

Bild 1: Anzahl von Gruppierungselementen ohne Aktivierung der Gruppierung

Die Lösung ist nicht ganz trivial, denn die Anzahl der verschiedenen Präsente kann sich ändern. Es wäre somit kein guter Stil, einfach für jede Präsentart ein Bezeichnungsfeld im Berichtsfuß zu platzieren und ein entsprechendes Textfeld mit der Anzahl zu füllen. Das Problem hierbei wäre, dass Sie jedes Mal, wenn ein Präsent hinzukommt oder wegfällt, in den Entwurf des Berichts eingreifen müssten.

Das Beispieldatenmodell sieht wie in Bild 2 aus und besteht aus einer Mitarbeiter- und einer Präsente-Tabelle. Also brauchen wir eine dynamische Lösung, die sich an den vorhandenen Präsentarten orientiert und je Präsent eine Zeile im Berichtsfuß erzeugt. Dies gelingt nur mit einem Unterbericht zuverlässig. Diesem weisen Sie als Datenherkunft eine Abfrage basierend auf den einzigen beiden Tabellen des Datenmodells zu. Den Bericht selbst erleichtern Sie um Seitenkopf und -fuß sowie um Berichtskopf und -fuß und fügen eine Gruppierung nach dem Feld PraesentID hinzu. Diese soll keinen Kopfbereich, aber einen Fußbereich enthalten. Dann minimieren Sie den Detailbereich, indem Sie seine Eigenschaft Höhe auf 0 einstellen oder den unter dem Detailbereich liegenden Gruppenfuß so weit nach oben schieben, dass der Detailbereich nicht mehr sichtbar ist. Im Gruppenfuß schließlich fügen Sie das Feld Praesent aus der Feldliste des Berichts ein. Ergänzen Sie diesen Bereich um ein weiteres Textfeld namens txtAnzahlPraesente, dessen Eigenschaft Steuerelementinhalt Sie auf den Wert =Anzahl(PraesentID) festlegen. Der Berichtsentwurf sollte nun wie in Bild 3 aussehen.

pic002.png

Bild 2: Datenmodell der Beispieldatenbank

pic003.png

Bild 3: Entwurf des Unterberichts zur Anzeige der Anzahl je Präsent

Die Summen von Zahlen in bestimmten Feldern innerhalb von Gruppierungen zu ermitteln, ist kein Hexenwerk. Manchmal benötigen Kunden aber Spezialanforderungen, die sich mit üblichen Mitteln nicht mehr bewerkstelligen lassen. Zum Beispiel das Bilden von Gruppensummen ohne das Vorhandensein von Gruppen. Der vorliegende Beitrag zeigt, wie dies funktioniert.

Neulich erreichte mich die Anforderung, für eine Liste von Elementen bestimmter Kategorien die Anzahl der Elemente je Kategorie auszugeben – allerdings nicht im Rahmen einer Gruppierung im Gruppenfuß, sondern ohne Gruppierung im Seitenfuß. Konkret ging es um die Ausgabe von Präsenten für Mitarbeiter, wobei die Mitarbeiter nicht nach Präsent gruppiert, sondern nach Alphabet, Alter oder sonstigen Kriterien sortiert werden sollten. Prinzipiell soll der Bericht also wie in Bild 1 aussehen.

pic001.png

Bild 1: Anzahl von Gruppierungselementen ohne Aktivierung der Gruppierung

Die Lösung ist nicht ganz trivial, denn die Anzahl der verschiedenen Präsente kann sich ändern. Es wäre somit kein guter Stil, einfach für jede Präsentart ein Bezeichnungsfeld im Berichtsfuß zu platzieren und ein entsprechendes Textfeld mit der Anzahl zu füllen. Das Problem hierbei wäre, dass Sie jedes Mal, wenn ein Präsent hinzukommt oder wegfällt, in den Entwurf des Berichts eingreifen müssten.

Das Beispieldatenmodell sieht wie in Bild 2 aus und besteht aus einer Mitarbeiter- und einer Präsente-Tabelle. Also brauchen wir eine dynamische Lösung, die sich an den vorhandenen Präsentarten orientiert und je Präsent eine Zeile im Berichtsfuß erzeugt. Dies gelingt nur mit einem Unterbericht zuverlässig. Diesem weisen Sie als Datenherkunft eine Abfrage basierend auf den einzigen beiden Tabellen des Datenmodells zu. Den Bericht selbst erleichtern Sie um Seitenkopf und -fuß sowie um Berichtskopf und -fuß und fügen eine Gruppierung nach dem Feld PraesentID hinzu. Diese soll keinen Kopfbereich, aber einen Fußbereich enthalten. Dann minimieren Sie den Detailbereich, indem Sie seine Eigenschaft Höhe auf 0 einstellen oder den unter dem Detailbereich liegenden Gruppenfuß so weit nach oben schieben, dass der Detailbereich nicht mehr sichtbar ist. Im Gruppenfuß schließlich fügen Sie das Feld Praesent aus der Feldliste des Berichts ein. Ergänzen Sie diesen Bereich um ein weiteres Textfeld namens txtAnzahlPraesente, dessen Eigenschaft Steuerelementinhalt Sie auf den Wert =Anzahl(PraesentID) festlegen. Der Berichtsentwurf sollte nun wie in Bild 3 aussehen.

pic002.png

Bild 2: Datenmodell der Beispieldatenbank

pic003.png

Bild 3: Entwurf des Unterberichts zur Anzeige der Anzahl je Präsent

Access im Unternehmen

Unser exklusives Angebot für Dich!

Access im Unternehmen
13,25 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements im ersten Jahr, danach 189,-/Jahr)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →