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

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen 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:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2007.

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

Zusammenfassung

Erweitern Sie Ihre Berichte um Seitenzahlen für die einzelnen Gruppierungen.

Techniken

Berichte, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

GruppierungMitSeitenzahl.mdb, GruppierungMitSeitenzahl.accdb

Shortlink

480

Gruppierung mit Seitenzahl

André Minhorst, Duisburg

Das Anzeigen der Seitenzahl und der Gesamtzahl der Seiten eines Berichts ist kein Hexenwerk. Viel komplizierter wird es, wenn Sie einzelne Gruppierungen innerhalb eines Berichts mit Seitenzahlen versehen möchten - und noch anspruchsvoller ist das Ermitteln der Gesamtseitenzahl der Gruppierung. Access im Unternehmen zeigt, wie das funktioniert.

Ein gutes Beispiel für den Einsatz einer Seitennummerierung gruppierter Daten ist das Kassenbuch aus dem gleichnamigen Artikel mit dem Shortlink 486. Dort zeigt ein Bericht nach Konten getrennt alle Buchungen an und beginnt jeweils eine neue Seite für jedes Konto. Konten können natürlich mehr Einträge enthalten, als auf eine Seite passen. Damit der Leser direkt weiß, dass die aktuelle Seite nicht die letzte Seite für das aktuelle Konto ist, sollten Sie ihn durch die Angabe der Seitenzahl darauf hinweisen - am besten sogar noch durch die passende Gesamtzahl der Seiten dieses Kontos.

So sollen Gruppierungen, die auf nur einer Seite Platz finden, etwa den Eintrag "Seite 1/1" erhalten, während andere mit mehreren Seiten beispielsweise mit "Seite 2/3" versehen werden (s. Abb. 1).

abb001.tif

Abb. 1: Berichte mit Seitenzahlen für die Seiten der enthaltenen Gruppierungen

Page und Pages

Bezogen auf einen kompletten Bericht ist das einfach. Hier reicht die Angabe des folgenden Ausdrucks für die Eigenschaft Steuerelementinhalt eines Textfelds:

="Seite " & [Seite] & "/" & [Seiten]

Die Funktionen Seite und Seiten (unter VBA Page und Pages) lassen sich allerdings von vorhandenen Gruppierungen wenig beeindrucken. Da müssen härtere Geschütze ran - zum Beispiel eine passende VBA-Funktion, die beim Formatieren des jeweiligen Gruppierungsbereichs aufgerufen wird.

Beim Formatieren

Die einzelnen Berichtsbereiche lösen jeweils das Ereignis Beim Formatieren aus - und das je nach der aktuellen Konfiguration einmal oder mehrmals.

Um Gruppierungen mit eigenen Seitenzahlen zu versehen, reicht diese Erkenntnis jedoch nicht aus. Das Wissen, wie die VBA-Funktionen Page und Pages eines Berichts arbeiten, hilft da schon eher weiter - gemixt mit einer weiteren Zutat: Und die lautet, dass Access beim Anzeigen von Berichten nur so viele Seiten im Voraus rendert, wie unbedingt nötig. Sprich: Wenn ein Bericht einfach nur ein paar Datensätze im Detailbereich anzeigen soll, wird auch zunächst nur die erste Seite aufbereitet. Erst beim Blättern zur zweiten Seite stellt Access deren Inhalt zusammen.

Wenn man das auf das Ziel dieses Beitrags ummünzt, nämlich das Nummerieren der Seiten einer Gruppierung und die Angabe der gesamten Seitenzahl dieses Bereichs, dann könnte man zumindest schon einmal die aktuelle Seite einer Gruppierung ausgeben - und zwar, indem man prüft, ob eine Seite die erste Seite einer Gruppierung ist oder eine der folgenden Seiten.

In Access-Berichten gruppiert man Daten nach einem bestimmten Wert der Datenherkunft, im Beispiel ist dies das Feld KontoID. Der Inhalt dieses Feldes ist das Kriterium, dass die Datensätze einer Gruppierung und damit auch der Seiten, auf denen diese ausgegeben werden, vereint. Um herauszufinden, ob eine Seite die erste Seite einer Gruppierung ist, vergleichen Sie einfach den Inhalt des Feldes KontoID mit dem passenden Wert der vorherigen Seite. Ist dieser nicht gleich, ist die Seite die erste Seite, sonst eine der folgenden Seiten.

Im Ereignis Beim Formatieren eines Gruppierungsbereichs erlaubt Access allerdings ausschließlich Zugriff auf den ersten Datensatz der Gruppierung, nicht auf Daten der vorherigen und schon gar nicht auf die Daten der folgenden Seiten.

Also speichern Sie den die aktuelle Gruppe charakterisierenden Wert in einer Variablen zwischen. Die Variable deklarieren Sie modulweit im Klassenmodul des Berichts:

Dim lngKonto As Long

Außerdem brauchen Sie noch eine Variable, in der Sie die aktuelle Seite des gruppierten Bereichs speichern:

Dim intSeiteGruppe As Integer

Die Routine, die durch das Ereignis Beim Formatieren ausgelöst wird, sieht schließlich wie in Listing 1 aus und funktioniert wie folgt:

Listing 1: Anzeigen der Seite einer Gruppierung in einem Textfeld

Private Sub Gruppenkopf0_Format(Cancel As Integer, FormatCount As Integer)

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

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:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.