Kapitel 29
Berichte für Fortgeschrittene
636
VBA-Erweiterung
Programmieren Sie in VBA, erstellen Sie eine
If-Else-End If
-Konstruktion, wie im nächsten Listing
gezeigt.
Im Prinzip verwenden Sie die gleiche Eigenschaft, um herauszufinden, ob ein Filter gesetzt ist, nur hier
mit dem englischen Namen: FilterOn. Ist die Eigenschaft FilterOn wahr, dann soll der Bericht mit der
Filterbedingung geöffnet werden, ansonsten ist der Bericht mit dem aktuellen Datensatz zu öffnen.
Kopieren Sie den gesamten Befehl
DoCmd.OpenReport
und fügen Sie ihn in der Zeile nach dem
Else
ein. Ersetzen Sie in der neuen Zeile
Me.Filter
durch
"Nr=" & [Nr]
. Damit wird die Nummer des
aktuellen Adressen-Datensatzes übergeben. Mit dem Feld Nr sind alle Adressen durchnummeriert.
Seitenzahl der ersten Seite festlegen
Möchten Sie, dass die Zählung Ihrer Berichtsseiten nicht auf Seite 1 beginnt, sondern auf einer von
Ihnen festgelegten Seite, können Sie das am einfachsten mithilfe eines dreizeiligen Programms erledigen.
Hier erst einmal die Vorbereitung:
1. Legen Sie die Seitenzahl für den Bericht über die gleichnamige Schaltfläche auf der Befehlsregister-
karte Entwurf fest.
2. Fügen Sie einen Berichtskopf mithilfe der Schaltfläche Berichtskopf/-fuß (Registerkarte Anordnen)
ein.
Die Ereignisprozedur
1. Wählen Sie zunächst den Berichtskopf aus.
2. Selektieren Sie auf dem Eigenschaftenblatt die Registerkarte Ereignis und wählen Sie für Beim
Formatieren in der Liste des Kombinationsfeldes [Ereignisprozedur] aus.
3. Klicken Sie dann auf die Schaltfläche mit den drei Punkten und wählen Sie Code-Generator aus.
Fügen Sie die im folgenden Listing dargestellte mittlere Zeile mit der gewünschten Seitenzahl,
hier 7, ein.
Private Sub cmdTelefonliste_Click()
If Me.FilterOn = True Then
DoCmd.OpenReport Reportname:="rptTelefonliste", _
View:=acPreview, _
whereCondition:=Me.Filter
Else
DoCmd.OpenReport Reportname:="rptTelefonliste", _
View:=acPreview, _
whereCondition:="Nr=" & [Nr]
End If
End Sub
Private Sub Berichtskopf_Format(Cancel As Integer, FormatCount As Integer)
Me.Page = 7
End Sub
Seitenzahl der ersten Seite festlegen
637
Berichte
4. Speichern Sie und wechseln Sie nun zurück zu Access.
5. Rufen Sie die Seitenansicht auf und kontrollieren Sie die erste Seite Ihres Berichts.
Die eingefügte Zeile
Me.Page=
ist einfach zu verstehen: Mit
Me
wird das aktuelle geöffnete Objekt
bezeichnet, in diesem Fall also der aktuelle Bericht. Für ihn wird mit
Page
die Seitenzahl festgelegt.
Veränderbare erste Seite
Beginnt Ihr Bericht nicht immer auf derselben Seitenzahl, sondern möchten Sie beim Aufruf des
Berichts festlegen, mit welcher Seitennummer der Bericht beginnen soll, können Sie eine Prozedur
schreiben, die vor dem Ausdruck oder vor der Seitenansicht in einem Dialogfeld die gewünschte
Seitenzahl abfragt.
1. Beginnen Sie damit, die Zeile
Me.Page=7
durch
Me.Page=intSeite
zu ersetzen.
2. Im nächsten Schritt fügen Sie ganz oben im Programm hinter dem Eintrag Option Compare
Database eine Leerzeile ein und geben darin
Dim intSeite As Integer
ein.
Damit haben Sie soeben eine so genannte Variable definiert, die in allen darunter aufgeführten
Programmen gilt. Mehr zu Variablen und ihren Gültigkeitsbereichen finden Sie in Kapitel 34.
Abbildg. 29.15
Erster Teil des neuen Programms
3.
Wählen Sie jetzt oben im Programmfenster im linken Kombinationsfeld Report aus und im
rechten Open.
4. Ergänzen Sie dann die zweite Prozedur wie in Abbildg. 29.16 gezeigt.
Sie rufen in der zweiten Prozedur ein Dialogfeld auf, das die Eingabe eines Wertes ermöglicht
und an die neu definierte Variable
intSeite
weitergibt.

Get Microsoft Office Access 2007 - Das Handbuch now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.