Berichtsbereiche, Gruppierungen und Sortierungen

Berichte haben verschiedene Bereiche, in die Sie die anzuzeigenden Daten einordnen können. Dazu gehört natürlich der Detailbereich, der für jeden Datensatz der Datenherkunft einmal angezeigt wird, der Berichtskopf und der Berichtsfuß sowie der Seitenkopf und der Seitenfuß. Schließlich kommen noch die entsprechenden Kopf- und Fußbereiche eventuell eingerichteter Gruppierungen hinzu. Dieser Beitrag zeigt, was Sie mit den einzelnen Bereichen anstellen können.

Wenn Sie alles aus Berichten herausholen wollen, müssen Sie die einzelnen Bereiche eines Berichts kennen und wissen, welche Ereignisse zu welcher Phase des Renderns eines Bereichts ausgelöst werden.

Berichtsbereiche

Wenn Sie einen Bericht neu erstellen, zeigt dieser drei Bereiche an – den Seitenkopf, den Detailbereich und den Seitenfuß. Seitenkopf und Seitenfuß werden auf jeder Seite angezeigt, der Detailbereich für jeden darzustellenden Datensatz je einmal.

Wenn Sie Informationen nur am Anfang und am Ende eines Berichts anzeigen wollen, fügen Sie noch die Bereiche Berichtskopf und Berichtsfuß ein – und zwar über den entsprechenden Kontextmenü-Eintrag Berichtskopf/-fuß einer Bereichsüberschrift im Bericht.

Fehlen noch die Gruppierungen: Damit können Sie nach einzelnen Feldern der Datenherkunft eines Berichts gruppieren – also etwa eine Liste von Artikeln nach einer Kategorie. Das ist insbesondere interessant, da Sie für jede Gruppierung auch einen Gruppenkopf und einen Gruppenfuß anlegen können. Der Gruppenkopfbereich könnte etwa den Namen der Kategorie aufführen, der Gruppenfußbereich die Anzahl der in der Kategorie enthaltenen Artikel.

Gruppierungen

In neueren Access-Versionen ab Version 2007 finden Sie den Bereich zum Einrichten von Gruppierungen und Sortierungen unten im Access-Fenster. Mit den beiden Schaltflächen Gruppe hinzufügen und Sortierung hinzufügen fügen Sie Gruppierungen und Sortierungen hinzu. Eine Konstellation mit zwei Gruppierungen sieht etwa wie in Bild 1 aus.

Dialog zum Festlegen von Sortierungen und Gruppierungen

Bild 1: Dialog zum Festlegen von Sortierungen und Gruppierungen

Alternativ zum Betätigen einer der Schaltflächen und anschließendem Auswählen des Feldes, nach dem Sie gruppieren oder sortieren möchten, können Sie das gewünschte Feld in der Entwurfsansicht des Berichts auch direkt aus der Feldliste an die gewünschte Stelle der Gruppierungs- und Sortierungsoptionen ziehen.

Der Unterschied zwischen dem Hinzufügen einer Gruppierung oder Sortierung ist, dass bei der Gruppierung gleich ein Kopfbereich mit hinzugefügt wird. Dies können Sie aber wie in Bild 2 auch für eine Sortierung nachholen und diese so in eine Gruppierung umwandeln.

Festlegen der Bereiche einer Gruppierung

Bild 2: Festlegen der Bereiche einer Gruppierung

Der Beispielbericht sieht nun ohne Steuerelemente bereits wie in Bild 3 aus.

Berichtsbereiche inklusive einer Gruppierung

Bild 3: Berichtsbereiche inklusive einer Gruppierung

Die Einstellungen aus dieser Abbildung sorgen übrigens dafür, dass die zugrunde lie-gen-den Artikel zunächst nach Kategorien und dann innerhalb der Kategorien nach Lie-fe-ran-ten gruppiert werden. Die Daten jeder Lieferanten-Gruppe werden dann noch einer auf-steigenden Sortierung unterzogen.

Eigenschaften von Berichten und Berichtsbereichen

Berichte und die einzelnen Bereiche verwenden einige Eigenschaften, die wichtig für die Gestaltung des Berichts sind. Dummerweise sind die Eigenschaften nicht an einem Ort aufzufinden, sondern über das Eigenschaftsfenster und den soeben vorgestellten Bereich Gruppieren, Sortieren und Summe verteilt. Nachfolgend schauen wir uns diese Eigenschaften im Detail an.

Kopfzeilenbereich und Fußzeilenbereich

Diese beiden Eigenschaften finden Sie im Bereich Gruppieren, Sortieren und Summe. Sie legen damit für Gruppierungen fest, ob diese einen Kopf- und/oder einen Fußbereich anzeigen sollen. Sie können diese Eigenschaften unter VBA mit den Eigenschaften Group-Header und GroupFooter ansprechen. Die Eigenschaften gehören zum GroupLevel-Ob-jekt. Dieses können Sie mit einer Variablen des Typs GroupLevel referenzieren. Dieses GroupLevel-Objekt liefert noch mehr Eigenschaften als nur GroupHeader und GroupFooter zurück. Die folgende Ereignisprozedur legen Sie für die Ereigniseigenschaft Beim Laden des Berichts fest (s. Bild 4):

Erstellen einer Ereignisprozedur, die Bereichseigenschaften beim Laden des Berichts ausgibt

Bild 4: Erstellen einer Ereignisprozedur, die Bereichseigenschaften beim Laden des Berichts ausgibt

Private Sub Report_Load()
     Dim grp As GroupLevel
     Set grp = Me.GroupLevel(0)
     Debug.Print "GroupInterval: " & grp.GroupInterval
     Debug.Print "ControlSource: " & grp.ControlSource
     Debug.Print "GroupFooter: " & grp.GroupFooter
     Debug.Print "GroupHeader: " & grp.GroupHeader
     Debug.Print "GroupOn: " & grp.GroupOn
     Debug.Print "KeepTogether: " & grp.KeepTogether
     Debug.Print "SortOrder: " & grp.SortOrder
End Sub

In diesem Fall lassen wir die Eigenschaften für das GroupLevel-Objekt mit dem Index 0 ausgeben. Dies liefert folgende Ergebnisse, die zeigen, dass es sich um den Gruppenkopf der Gruppierung nach dem Feld KategorieID handelt:

GroupInterval: 1
ControlSource: KategorieID
GroupFooter:   Falsch
GroupHeader:   Wahr
GroupOn:       0
KeepTogether:  0
SortOrder:     Falsch

Mit GroupHeader und GroupFooter legen Sie also fest, ob ein Kopf- und ein Fußbereich eingeblendet werden sollen.

Die Eigenschaften Gruppieren nach und Intervall

Oben haben wir schon gesehen, dass die Eigenschaft ControlSource der Gruppierungsebene den Namen des Feldes liefert, nach dem gruppiert werden soll. In diesem Fall soll nach jedem Wert des Feldes KategorieID gruppiert werden.

Dazu legen Sie in der Benutzeroberfläche für die Eigenschaft den entsprechenden Feldnamen fest.

Wir können eine Gruppe jedoch auch anders nutzen als zur Gruppierung nach allen Elementen der Gruppe. Unter den Eigenschaften des GroupLevel-Objekts finden wir nämlich auch noch die beiden Eigenschaften GroupOn und GroupInterval. GroupOn enthält hier standardmäßig den Wert 0.

Für das folgende Beispiel entfernen Sie die bisherigen Gruppen und legen eine neue Gruppe nach dem Feld Artikelname an. Stellen Sie dann die Eigenschaft, die standardmäßig den Wert nach Gesamtwert enthält, auf den Wert Benutzerdefiniert ein und legen Sie unter Zeichen den Wert 1 fest (s. Bild 5).

Einstellen eines neuen Intervalls

Bild 5: Einstellen eines neuen Intervalls

Was bewirkt dies nun Um dies zu sehen, fügen Sie dem Detailbereich ein paar der Felder der Tabelle tblArtikel hinzu. Den Gruppenkopfbereich der soeben erstellten Gruppe ergänzen Sie um den Ausdruck =Links([Artikelname];1) als Wert der Eigenschaft Steuer-elementinhalt (s. Bild 6).

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