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 5/2005.

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

Ergänzen Sie umfangreiche Berichte durch ein Inhaltsverzeichnis.

Techniken

Berichte

Voraussetzungen

Access 2000 oder höher

Beispieldateien

InVerz.mdb

Inhaltsverzeichnisse für Access-Berichte

Karl Donaubauer, Wien

Dem an sich leistungsfähigen Reportgenerator von Access fehlt eine eingebaute Funktionalität für Inhaltsverzeichnisse. Durch die Vielfalt der Einstellungen für Gruppierungen, Zusammenhalten und Seitenumbrüche können die Formatierungsvorgänge in Berichten sehr komplex werden. Eine selbst programmierte Lösung zum Erzeugen von Inhaltsverzeichnissen muss darauf Rücksicht nehmen.

Objekte der Beispiel-Datenbank

Die Tabelle tblOrte (s. Abb. 1) enthält rund 270 Datensätze mit den Feldern Land, Bundesland und Ort. Die Datenstruktur ist abgeflacht, um die Beispiele in Hinblick auf die Daten einfach zu halten. Im normalisierten Fall müssten das natürlich mehrere Tabellen mit 1:n-Beziehungen sein. Zudem enthält die Tabelle ein Ja/Nein-Feld namens Drucken, das eine einfache Filtermöglichkeit für Tests mit den Inhaltsverzeichnissen bietet.

Die zweite Tabelle tblInhaltsverzeichnis dient dazu, die Information zum Erstellen der Inhaltsverzeichnisse aufzunehmen. Die Tabelle hat eine sehr einfache Struktur (s. Abb. 2). Sie besitzt nur zwei relevante Felder zur Aufnahme der Texteinträge und Seitenzahlen für das Inhaltsverzeichnis.

Abb. 1: Die Testdaten in der Tabelle tblOrte

Abb. 2: Tabelle für die Daten der Inhaltsverzeichnisse

Die einzige Abfrage qryOrte dient als Datenquelle aller Berichts-Beispiele, um die Daten der Tabelle tblOrte über das bereits erwähnte Ja/Nein-Feld filtern zu können.

Das einzige Formular frmBerichtOeffnen (s. Abb. 3) enthält ein Listenfeld mit den Berichtsnamen und eine Schaltfläche zum Öffnen. Der entsprechende Code wird später erläutert.

Abb. 3: Formular zum Aufrufen der Berichte

Es gibt mehrere Beispiel-Berichte und ein Standardmodul basInhaltsVerzeichnis, das fast den gesamten Code zur Erzeugung der Inhaltsverzeichnisse enthält.

Mit wenigen Klicks zum
Inhaltsverzeichnis

Öffnen Sie das Formular frmBerichtOeffnen, wählen Sie im Listenfeld den ersten Bericht rptOrteLaender1 und öffnen Sie ihn entweder per Doppelklick auf den Listeneintrag oder durch Klick auf die Schaltfläche.

Abb. 4: Inhaltsverzeichnis im Berichtskopf

Abb. 4 zeigt die erste Seite des Berichtes mit einem einfachen Inhaltsverzeichnis auf Basis der Länder. Abb. 5 zeigt eine typische Seite für die Beispiel-Berichte mit Gruppierungen und Gruppenköpfen für die Länder und Bundesländer, wie für solche 1:n-Strukturen üblich.

Abb. 5: Bericht mit Gruppierung nach Ländern

Wenn Sie in die Entwurfsansicht des Berichtes wechseln, sehen Sie, dass der Unterbericht rptInhaltsverzeichnis das Inhaltsverzeichnis liefert. Er bezieht seine Daten aus der schon erwähnten Hilfstabelle tblInhaltsverzeichnis, die dynamisch per Code geleert und gefüllt wird.

Der Code

Wie funktioniert nun die Sache im Detail? Die ersten Schritte erfolgen im Code hinter der Schaltfläche des Formulars (s. Quellcode 1).

Die erste wichtige Codezeile ist jene mit dem DELETE. Sie löscht zunächst alle alten Einträge in der Tabelle tblInhaltsverzeichnis.

Dann wird die globale Boolean-Variable blnTOC auf True gesetzt.

Quellcode 1: Vorbereitungen zum Erstellen des Inhaltsverzeichnisses

Private Sub btnStartReport_Click()

    On Error GoTo myError

    If IsNull(Me!lstBerichte) Then Exit Sub

    Dim strReport As String

    strReport = Me!lstBerichte

    CurrentDb.Execute "DELETE FROM tblInhaltsverzeichnis"

    blnTOC = True

    DoCmd.OpenReport strReport, acViewPreview, , , acHidden

    DoCmd.Close acReport, strReport

    blnTOC = False

    DoCmd.OpenReport strReport, acViewPreview

myExit:

    Exit Sub

myError:

    MsgBox "Ausnahme Nr. " & Err.Number & " " _
        & Err.Description, vbCritical

    Resume myExit

End Sub

Quellcode 2: Ereignisprozeduren der Berichtsbereiche mit Aufrufen weiterer Prozeduren

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:

Verwandte Beiträge:

Termine in Berichten darstellen

Berichte manuell füllen

Ereignisprozeduren

Ereignisse im Eigenbau

Gruppensummen ohne Gruppen im Berichtsfuß

© 2003-2015 André Minhorst Alle Rechte vorbehalten.