O'Reilly logo

Microsoft Office Access 2007 - Das Handbuch by Natascha Nicol, Ralf Albrecht

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Kapitel 29
Berichte für Fortgeschrittene
632
Die im Formular getroffene Auswahl drucken
In vielen Anwendungen möchte man die in einem Formular gezeigten Daten ausdrucken. Man
könnte zwar einfach das Formular drucken, aber das bringt die Daten nicht in der gewünschten
Form zu Papier.
Wir möchten Ihnen hier eine Lösung vorstellen, bei der über eine Befehlsschaltfläche auf einem
Formular ein Bericht aufgerufen wird. Die Besonderheit hierbei ist: Wenn Sie für Ihr Formular
einen Filter aktiviert haben, werden nur die gefilterten Daten gedruckt.
Wie das funktioniert, soll im Folgenden am Beispiel der Adressenliste gezeigt werden. Auf dem noch
zu erstellenden Formular frmAdressenliste soll ein formularbasierter Filter aufgerufen und ausge-
führt werden.
Abbildg. 29.9
Es sollen alle Personen gefiltert werden, deren Nachname mit M beginnt
Ist der Filter ausgeführt, wird die Schaltfläche zum Aufrufen der Telefonliste freigegeben und ein
Klick darauf, so ruft das Formular die Telefonliste in der Seitenansicht auf.
Abbildg. 29.10
Bericht mit den im Formular gefilterten Datensätzen
Schließen Sie den Bericht und entfernen Sie den Filter im Formular wieder.
Die im Formular getroffene Auswahl drucken
633
Berichte
Vorbereitung
1. Erstellen Sie mithilfe des Formular-Assistenten auf Grundlage der Tabelle Adressenliste ein einfa-
ches Formular mit dem Namen frmAdressenliste
2. Fügen Sie darauf eine Befehlsschaltfläche ein, die den Bericht rptTelefonliste in der Vorschau
aufruft und geben Sie der Schaltfläche auf der letzten Registerkarte des Befehlsschaltflächen-
Assistenten den Namen cmdTelefonliste.
Auswahl per Makro treffen
Access legt so für Sie zur neuen Schaltfläche für das Ereignis Beim Klicken ein Makro an. Die nächste
Aufgabe besteht nun darin, dem Bericht mitzuteilen, welche Datensätze angezeigt werden sollen.
Dazu kann man eine Bedingung definieren, die den Filter an die Telefonliste übergibt (siehe
Abbildg. 29.11).
Abbildg. 29.11
Makro mit Bedingung zum Öffnen der Telefonliste
Haben Sie auf dem Formular alle Filter gelöscht und wird kein Filter übergeben, wird die gesamte
Telefonliste angezeigt.
Auswahl per VBA treffen
Möchten Sie das Problem per VBA lösen, so verwenden Sie auf dem Eigenschaftenblatt der Schalt-
fläche für das Ereignis Beim Klicken den Code-Generator. Der Befehl zum Öffnen eines Berichts
heißt
DoCmd.OpenReport.
Geben Sie diesen Befehl ein, so erhalten Sie in einem Feld alle möglichen
Argumente für diesen Befehl aufgeführt. Wir wollen dem Bericht zunächst den benötigten Namen
übergeben (dazu benötigen wir das Argument ReportName) und festlegen, dass er in der Seitenan-
sicht geöffnet werden soll (dazu wird das Argument View verwendet).
Kapitel 29
Berichte für Fortgeschrittene
634
Abbildg. 29.12
Befehl zum Öffnen eines Berichts
Geben Sie einfach hinter
openReport
die Namen der benötigten Argumente, dann »:=« und schließlich
das Argument ein. Also ergänzen Sie den Befehl zum einen durch
ReportName:="rptTelefonliste"
und zum anderen durch
View:=acViewPreview
. Das Argument
acViewPreview
finden Sie, wenn Sie
nach der Auflistung
acView
in der Hilfe suchen. Dort sind alle verwendbaren Parameter angegeben.
Möchten Sie nun auch den Filter übergeben, ergänzen Sie die Argumentliste um
WhereCondition:=
Forms!frmAdressenliste.Filter
. Die
WhereCondition
ist eine Art WHERE-Klausel für den Bericht.
Den vollständigen Code sehen Sie in Abbildg. 29.13.
Abbildg. 29.13
Den Bericht rptTelefonliste in der Seitenansicht mit übergebenem Filter öffnen
Da die Programmzeile so lang ist, dass sie nicht vollständig im Programmfenster
angezeigt werden würde, wurde sie mithilfe des Fortführungszeichens »_« umgebrochen. Es ist
zudem in der Regel übersichtlicher, wenn Sie die einzelnen Argumente untereinander anordnen.
HINWEIS
Die im Formular getroffene Auswahl drucken
635
Berichte
Sie können obigen Code verkürzen, indem Sie anstelle des Ausdrucks
Forms!
frmAdressenliste.Filter
einfach
Me.Filter
schreiben. Mit
Me
wird hierbei das aktuelle Formular
bezeichnet.
Nur den aktuellen Datensatz drucken
Möchten Sie jetzt nicht nur gefilterte Datensätze drucken, sondern (wenn kein Filter definiert ist)
den aktuellen Datensatz ausgeben, erweitern Sie einfach das Makro oder die Ereignisprozedur.
Makro-Erweiterung
Im Prinzip müssen Sie jetzt zwei Bedingung definieren: Wenn der Filter aktiv ist, dann soll entspre-
chend der Filterung die Telefonliste dargestellt werden, ist kein Filter gesetzt, dann soll die Nummer
des aktuellen Datensatzes übergeben und nur dieser in der Liste angezeigt werden.
Dazu kann die FilterAktiv-Eigenschaft folgendermaßen verwendet werden:
Ist die Eigenschaft FilterAktiv wahr, dann rufe den Bericht mit gefilterten Daten auf.
Ist die Eigenschaft FilterAktiv falsch, dann rufe den Bericht mit dem aktuellen Datensatz auf. Dazu
wird die Nummer des aktuellen Datensatzes übergeben.
Klicken Sie auf die Schaltfläche Bedingung, um vor den Makroaktionen eine weitere Spalte einzu-
schalten, die die Bedingung für die dahinterstehende Aktion aufnehmen kann.
Abbildg. 29.14
Zwei Bedingungen mit Aktionen
TIPP

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required