Kapitel 29
Berichte für Fortgeschrittene
644
Für Filme, die als Preview gezeigt werden, wurde für die laufende Woche (LfdWoche) der Wert »0«
erfasst. Für sie soll im Folgenden ein eigenes Bezeichnungsfeld mit der Aufschrift »Preview« erstellt
werden.
1. Erstellen Sie zunächst ein Bezeichnungsfeld mit Preview als Inhalt. Formatieren Sie das Bezeich-
nungsfeld nach Belieben und schieben Sie es über das Icon.
2. Benennen Sie dann das Bezeichnungsfeld mit lblPreview und öffnen Sie erneut die Ereignispro-
zedur zum Detailbereich.
3. Ergänzen Sie die Prozedur für das Preview-Feld wie in Abbildg. 29.26 gezeigt: Zunächst wird das
Bezeichnungsfeld lblPreview unsichtbar geschaltet. Dann wird die
If
-Konstruktion um eine wei-
tere Abfrage erweitert: Wenn der Wert des
[LfdWoche]
-Feldes gleich
0
ist, soll das Preview-Feld
sichtbar werden.
Abbildg. 29.26
Die für das Preview-Feld ergänzte Prozedur
Zeichenketten während der Formatierung
zusammensetzen
Für dieses Beispiel soll einer der alten Berichte des Kinoprogramms (siehe Abbildg. 28.25)
verwendet werden. Darin sind die Termine der Filme untereinander angeordnet, was viel Platz ver-
braucht. Schöner wäre es, wenn man die Zeiten so zusammensetzen könnte, dass alle Termine für
einen Tag hintereinander angeordnet sind, wie Sie es in Abbildg. 29.27 sehen.
1. Kopieren Sie dazu den Bericht rptKinoProgramm und speichern Sie ihn unter dem Namen rpt-
KinoProgrammMitZusammenfassung ab.
2. Gruppieren Sie dann für den Ta g und legen sowohl einen Kopf- als auch einen Fußzeilenbereich an.
Zeichenketten während der Formatierung zusammensetzen
645
Berichte
Abbildg. 29.27
Termine der Filme übersichtlicher angeordnet
Das Problem besteht jetzt darin, für jeden Tag die Zeiten mit Pluszeichen aneinander zu hängen. Die
Lösung des Problems ist etwas trickreich: In Abbildg. 29.28 sind im Ta g - Fu ß b e r e i c h zwei Steuer-
elemente gezeigt. Im linken wird der Tag ausgegeben, das rechte Steuerelement ist ein ungebundenes
Textfeld (mit dem Name txtZeit2), in dem die zusammengesetzten Zeiten gedruckt werden sollen.
Abbildg. 29.28
Entwurfsansicht des Berichts
Kapitel 29
Berichte für Fortgeschrittene
646
Die Zeiten werden wie folgt zusammengesetzt: Für jeden Tag wird der Detailbereich so oft formatiert,
wie Zeiten für den Tag vorhanden sind. Jede einzelne Zeit wird im Steuerelement txtZeit im Detail-
bereich ausgegeben. Allerdings wurde das Steuerelement txtZeit unsichtbar gemacht und gleichzeitig
wurde für den Detailbereich und das Steuerelement txtZeit die Eigenschaft Ve r kl ei ne r ba r auf Ja
gesetzt. Dadurch wird die Ausgabe des Detailbereichs komplett unterdrückt, aber trotzdem tritt für
jede Zeit, die unsichtbar im Detailbereich ausgegeben wird, das Ereignis Beim Formatieren ein.
Danach wurde eine Ereignisprozedur für das Ereignis Beim Formatieren erstellt, die im folgenden
Listing als
Sub Detailbereich_Format
dokumentiert ist. In dieser Prozedur wird jede Zeit der Vari-
ablen
strZeit
zugewiesen, die für das ganze Programm des Berichts definiert wurde. Wird mehr als
eine Zeit angehängt, werden die einzelnen Zeiten durch »+« verbunden.
Sind keine Zeiten mehr zu formatieren, wird der Gruppenfuß für den Wochentag ausgegeben. In
der Prozedur
Gruppenfuß1_Format
wird die in strZeit zusammengestellte Zeichenkette der Zeiten
dem ungebundenen Textfeld txtZeit2 übergeben.
Bei jedem neuen Wochentag wird für den Gruppenkopf in der Prozedur
Gruppenkopf2_Format
die
Variable
strZeit
zurückgesetzt, so dass das Sammeln der Zeiten erneut beginnen kann.
Dim strZeit As String
Private Sub Detailbereich_Format(Cancel As Integer, _
FormatCount As Integer)
' Feld txtZeit im Detailbereich ist unsichtbar
If strZeit = "" Then
' für die erste Zeit in strZeit
strZeit = Format([txtZeit], "HH:MM")
Else
' für alle weiteren Zeiten
strZeit = strZeit & " + " & Format([txtZeit], "HH:MM")
End If
End Sub
' Gruppenfuß für den Wochentag
Private Sub Gruppenfuß1_Format(Cancel As Integer, _
FormatCount As Integer)
' Zeitkette ausgeben
txtZeit2 = strZeit
End Sub
' Gruppenkopf für den Wochentag
Private Sub Gruppenkopf2_Format(Cancel As Integer, _
FormatCount As Integer)
' String neu initialisieren
strZeit = ""
End Sub

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.