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

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar