Berichte im Telefonbuchstil (Access 97, 2000)

16.12.2003

Durch den Einsatz von VBA-Ereignisprozeduren können Sie diesen Komfort auch in Ihren Berichten zur Verfügung stellen.

Ein Telefonbuch enthält üblicherweise im Kopfbereich den ersten und letzten Eintrag der aktuellen Seite. Dies erleichtert das Auffinden bestimmter Einträge erheblich.

Als Beispiel dient ein Bericht, in dem Artikelnamen aufgelistet werden. Der Name des ersten und letzten Artikels einer Seite sollen jeweils im Seitenkopf ausgegeben werden. Plazieren Sie zu diesem Zweck im Kopfbereich ein Textfeld für den jeweils ersten Eintrag. Der Steuerelementinhalt-Eigenschaft weisen Sie einfach den Namen des gewünschten Feldes zu (in diesem Fall also Artikelname).

In einem zweiten Textfeld namens txtArrayBis soll Access den letzten Eintrag der Seite anzeigen. Diese Information ist etwas schwieriger zu ermitteln. Access muß dazu die gesamten letzten Artikelnamen der einzelnen Seiten in einem ersten Formatierungsdurchgang ausfindig machen und in einem Zeichenketten-Array abspeichern. Die Deklaration dieses Arrays nehmen Sie im Deklarationsbereich des Berichtsmoduls vor. Zusätzlich definieren Sie eine weitere Variable, die den ersten Formatierungsdurchgang vom eigentlichen Ausdruck unterscheidet:

Private ErsterDurchgang As Boolean
Private aryFirmaBis() As String

Sobald der Bericht geöffnet wird, muss der Inhalt der Variablen ErsterDurchgang auf True gesetzt werden. Dies bedeutet, dass der erste Formatierungsvorgang noch bevorsteht. Die Beim Öffnen-Ereignisprozedur hat dementsprechend den folgenden Aufbau:

Private Sub Report_Open(Cancel As Integer)
    ErsterDurchgang = True
End Sub

Das Füllen des Arrays übernimmt die Beim Formatieren-Ereignisprozedur, die an den Seitenfuß geknüpft ist:

Private Sub Seitenfuß_Format(Cancel As Integer, FormatCount As Integer)

    If ErsterDurchgang Then
        ReDim Preserve aryFirmaBis(Me.Page)
        aryFirmaBis(Me.Page) = Me!Firma
    End If

End Sub

Damit der Liste auch der allerletzte Eintrag des Berichts hinzugefügt wird, muß der Berichtsfuß ebenfalls an eine Ereignisprozedur geknüpft werden. Zusätzlich setzt diese Prozedur die Variable ErsterDruchgang auf False, um das Ende des Formatierungsdurchlaufs zu kennzeichnen:

Private Sub Berichtsfuß_Format(Cancel As Integer, FormatCount As Integer)

    If ErsterDurchgang Then
        ReDim Preserve aryFirmaBis(Me.Page)
        aryFirmaBis(Me.Page) = Me!Firma
        ErsterDurchgang = False
    End If

End Sub

Beim nächsten Formatierungsdurchgang (bei dem die Seiten schließlich auch ausgedruckt werden) wird das entsprechende Element aus dem Array ermittelt und dem Textfeld txtArtikelBis zugewiesen. Die Ereignisprozedur Beim Formatieren des Seitenkopfes, in dem sich die Überschriften befinden, hat damit den folgenden Aufbau:

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

    If Not ErsterDurchgang Then
        Me!txtFirmaBis = aryFirmaBis(Me.Page) 
    End If

End Sub

Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.