Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2016.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

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).

Leerer Kopfbereich für die Gruppierung nach dem Feld ArtikelID

Bild 6: Leerer Kopfbereich für die Gruppierung nach dem Feld ArtikelID

Wenn Sie nun in die Seitenvorschau wechseln, erhalten Sie die Ansicht aus Bild 7. Der Bericht gruppiert die Artikel nach dem Anfangsbuchstaben und fügt jeder Gruppe einen Gruppenkopfbereich hinzu, der den ersten Buchstaben einer jeden Gruppe ausgibt.

Der Gruppenkopf liefert alle fünf Zeilen eine Leerzeile – bis auf das erste Intervall, das nur vier Datensätze enthält.

Bild 7: Der Gruppenkopf liefert alle fünf Zeilen eine Leerzeile – bis auf das erste Intervall, das nur vier Datensätze enthält.

Auf diese Weise haben Sie mit wenigen Handgriffen eine Artikelliste erstellt, die jeweils den Anfangsbuchstaben vor einer Gruppe entsprechender Artikel ausgibt.

Gruppieren nach ...

Je nach Datentyp bietet die Eigenschaft GroupOn, die ja im Bereich Gruppieren, Sortieren und Summe leider nur als Auswahlwert und nicht, wie üblich, unter Angabe eines Eigenschaftsnamens angeführt wird, verschiedene Möglichkeiten.

Sollten Sie diese einmal per VBA einstellen wollen, haben wir in den nachfolgenden Listen die notwendigen Werte für die Eigenschaften GroupOn und GroupInterval aufgeführt.

Für Zahlenwerte:

  • nach Gesamtwert (GroupOn: 0, GroupInterval: 1)
  • nach 5ern (GroupOn: 9, GroupInterval: 5)
  • nach 10ern (GroupOn: 9, GroupInterval: 10)
  • nach 100ern (GroupOn: 9, GroupInterval: 100)
  • nach 1.000ern (GroupOn: 9, GroupInterval: 1.000)

Für Textfelder:

  • nach Gesamtwert (GroupOn: 0, GroupInterval: 1)
  • nach dem ersten Zeichen (GroupOn: 1, GroupInterval: 1)
  • nach den ersten beiden Zeichen (GroupOn: 1, GroupInterval: 2)
  • Benutzerdefiniert – nach x Zeichen (GroupOn: 1, GroupInterval: x)

Für Datumsfelder:

  • nach Gesamtwert (GroupOn: 0, GroupInterval: 1)
  • nach Tag (GroupOn: 6, GroupInterval: 1)
  • nach Woche (GroupOn: 5, GroupInterval: 1)
  • nach Monat (GroupOn: 4, GroupInterval: 1)
  • nach Quartal (GroupOn: 3, GroupInterval: 1)
  • nach Jahr (GroupOn: 2, GroupInterval: 1)
  • Benutzerdefiniert nach x Minuten (GroupOn: 8, GroupInterval: x)/Stunden (GroupOn: 7, GroupInterval: x)/Tagen (GroupOn: 6, GroupInterval: x)/Wochen (GroupOn: 5, GroupInterval: x)/Monate (GroupOn: 4, GroupInterval: x)/Quartale (GroupOn: 3, GroupInterval: x)/Jahre (GroupOn: 2, GroupInterval: x)

Zusammenhalten von Daten

Im Bereich Gruppieren, Sortieren und Summe finden Sie auch noch die Möglichkeit, Einstellungen für das Zusammenhalten von Gruppen vorzunehmen (s. Bild 8). Diese bietet folgende Optionen:

Einstellen der Optionen zum Zusammenhalten von Gruppenelementen

Bild 8: Einstellen der Optionen zum Zusammenhalten von Gruppenelementen

  • Gruppe nicht auf einer Seite zusammenhalten (KeepTogether: 0): Der Bericht wird einfach nach dem letzten Element, das auf eine Seite passt, auf der folgenden Seite fortgesetzt.
  • Gesamte Gruppe auf einer Seite zusammenhalten (KeepTogether: 1): Wenn eine Gruppe nicht mehr komplett auf eine Seite passt, wird diese samt Gruppenkopfbereich auf der folgenden Seite abgebildet. Sollten die Elemente der Gruppe mehr als eine Seite füllen, wird diese auf der folgenden Seite fortgesetzt.
  • Kopfzeile und ersten Datensatz auf einer Seite zusammenhalten (KeepTogether: 2): Dies verhindert, dass der Gruppenkopf unten auf einer Seite und der erste Datensatz der Gruppe auf der folgenden Seite erscheint.

Gruppe in einer Spalte zusammenhalten

Für mehrspaltige Berichte benötigen Sie für das Zusammenhalten von Daten einer Gruppierung eventuell noch eine weitere Eigenschaft. Wenn Sie die zweite Option gewählt haben (KeepTogether: 1), werden Gruppen auch innerhalb der verwendeten Spalten zusammengehalten. Das heißt, dass eine Gruppe, die nicht in die erste Spalte einer Seite passt, erst in der zweiten Spalte der Seite beginnt. Sollte dieses Verhalten nicht gewünscht sein und ein Aufteilen der Gruppe auf mehrere Spalten innerhalb einer Seite ist akzeptabel, stellen Sie die Eigenschaft Zusammenhalten auf Nein ein (Ja ist der Standardwert). Diese Eigenschaft finden Sie allerdings im Eigenschaftsfenster des jeweiligen Gruppenkopfbereichs (s. Bild 9).

Gruppe innerhalb einer Spalte zusammenhalten oder nicht?

Bild 9: Gruppe innerhalb einer Spalte zusammenhalten oder nicht?

Neue Seite, Zeile oder Spalte

Gruppierungen und auch der Detailbereich bieten die Möglichkeit, vor, nach oder vor und nach einem Bereich eine neue Seite, Zeile oder Spalte zu beginnen. Mit der Ei­gen­schaft ?Neue Seite (VBA: ?ForceNewPage) des Bereichs im Eigenschaftsfenster des jeweiligen Bereichs geben Sie an, ob vor oder nach dem Bereich oder auch in beiden Fällen eine neue Seite erzeugt werden soll.

Die Eigenschaft ?Neue Zeile oder Spalte (VBA: ?NewRowOrCol) legt fest, ob Bereiche in mehr­spal­tigen Berichten in einer neuen Zeile oder einer neuen Spalte angelegt werden sollen. Ob es sich nun um eine neue Zeile oder Spalte handelt, hängt vom Spaltenlayout ab, das Sie im Dialog Seite einrichten festlegen (s. Bild 10). Diesen Dialog öffnen Sie über den Ribbon-Eintrag Seite einrichten|Seiten­layout|Spalten.

Einstellungen für die Spalten einer Seite

Bild 10: Einstellungen für die Spalten einer Seite

Vergrößerbar und Verkleinerbar

Manchmal enthalten Felder keine Daten – das kann beispielsweise bei Adressdaten passieren. Da fehlt mal hier ein Ansprechpartner und mal dort eine Straße. Wenn Sie die Eigenschaft Verkleinerbar der Textfelder eines Adress­etiketts auf Ja einstellen, werden die Felder, wenn diese keinen Inhalt ha­ben, auf die Höhe 0 verkleinert. Die anderen Felder rücken dafür nach oben.

Das Verkleinern funktioniert allerdings nur, wenn sich die Felder nicht mit anderen Feldern überlappen und auch keine anderen Felder auf der gleichen Höhe liegen. Eventuelle Zwischenräume werden nicht verkleinert. Wenn Sie also Zwischenräume benötigen, vergrößeren Sie einfach die Höhe der betroffenen Steuerelemente.

Bereich wiederholen

Wenn sich gruppierte Daten mit Feldüberschriften oder ähnlichen Informationen im Gruppenkopf über mehr als eine Seite erstrecken, sollten die Überschriften auch auf den Folgeseiten angezeigt werden. Dies legen Sie fest, indem Sie die Eigenschaft ?Bereich wiederholen (VBA: ?RepeatSection des Section-Objekts) der jeweiligen Gruppierung auf den Wert Ja einstellen.

Zusammenfassung und Ausblick

In einem weiteren Beitrag zum Thema Berichte schauen wir uns Beispiele zu diesen Bereichen an. Außerdem stellen wir die verschiedenen Ereignisse vor, die durch die Berichtsbereiche ausgelöst werden können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Download

Download

Die .zip-Datei enthält folgende Dateien:

Berichtsbereiche.accdb

Beispieldateien downloaden

© 2003-2015 André Minhorst Alle Rechte vorbehalten.