Berichte öffnen

Wer mit Access arbeitet, möchte in der Regel auch die enthaltenen Daten hübsch aufbereitet als Bericht präsentieren. Damit der Bericht erscheint, ist allerdings noch ein wenig Handarbeit nötig: Schließlich wollen Sie dem Benutzer Ihrer Datenbank ja hoffentlich nicht das Datenbankfenster oder den Navigationsbereich als Steuerzentrale anbieten, sondern das öffnen von Berichten und anderen Elementen per Menü, Ribbon oder schlicht von einem Formular aus ermöglichen. Dieser Artikel liefert die nötigen Grundlagen zum Anzeigen von Berichten.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1110_BerichteOeffnen.mdb.

Bericht, öffne Dich!

Zum öffnen von Formularen und Berichten gibt es im Wesentlichen zwei Möglichkeiten: per Doppelklick auf den entsprechenden Eintrag im Datenbankfenster (bis Access 2003) oder im Navigationsbereich (ab Access 2007) oder mit dem VBA-Befehl DoCmd.OpenForm beziehungsweise DoCmd.OpenReport. Dieser Artikel dreht sich um letztere Anweisung, die einen Bericht auf verschiedene Arten öffnet – und auf verschiedene Benutzeraktionen hin. Zum Testen öffnen Sie einfach den VBA-Editor, aktivieren das Direktfenster mit der Tastenkombination Strg + G und tippen dort einfach folgenden Befehl ein:

DoCmd.OpenReport ""

Uups – schon sendet Access den Bericht an den Drucker. Da der durchschnittliche Access-Entwickler in seiner Laufbahn wohl mindestens zehn Mal mehr Formulare als Berichte öffnet, vergisst er gern, dass DoCmd.OpenReport nur mit dem Berichtsnamen als Parameter den Bericht direkt druckt. Damit der Bericht nicht gedruckt, sondern in der Seitenansicht angezeigt wird, fügen Sie einen weiteren Parameter namens View hinzu und vergeben für diesen den Wert acViewPreview:

DoCmd.OpenReport "rptArtikel", View:=acViewPreview

Das funktioniert: Der Bericht erscheint in der Seitenansicht (siehe Bild 1). Wenn Sie die Seitenansicht eines Berichts etwa über die Schaltfläche eines Formulars öffnen möchten, erstellen Sie zunächst ein Formular mit einer Schaltfläche namens cmdSeitenansicht. Wählen Sie für die Eigenschaft Beim Klicken den Wert [Ereignisprozedur] aus und klicken Sie auf die Schaltfläche mit den drei Punkten (…) rechts neben der Eigenschaft.

Ein in der Seitenvorschau geöffneter Bericht

Bild 1: Ein in der Seitenvorschau geöffneter Bericht

Die nun im VBA-Editor angezeigte leere Ereignisprozedur füllen Sie wie folgt:

Private Sub cmdSeitenansicht_Click()
     DoCmd.OpenReport "rptArtikel", _
         View:=acViewPreview
End Sub

Wenn Sie nun in die Formularansicht wechseln und die Schaltfläche betätigen, erscheint der Bericht wie oben beschrieben (siehe Formular frmBerichteOeffnen, Bericht rptArtikel).

Weitere Berichtsansichten

Neben der Seitenansicht, die Sie mit dem Wert acViewPreview für den Parameter View erhalten, gibt es noch einige weitere Ansichten:

  • acViewDesign: Entwurfsansicht, dient der Anpassung des Entwurfs des Berichts.
  • acViewLayout: Layoutansicht. Wurde mit Access 2007 eingeführt und erlaubt das Anpassen des Entwurfs, während der Bericht Daten anzeigt.
  • acViewNormal: Druckt den Bericht.
  • acViewPivotChart, acViewPivotTable: Werden als Paramter angeboten, funktionieren aber nicht.
  • acViewPreview: öffnet die Seitenansicht des Berichts.
  • acViewReport: öffnet die Berichtsansicht (seit Access 2007). Die Berichtsansicht erlaubt interaktiven Zugriff auf einen Bericht.

Angezeigte Daten einschränken

Es gibt zwei Möglichkeiten, die in einem Bericht anzuzeigenden Daten anzuzeigen. Beide legen Sie über einen Parameter der DoCmd.OpenForm-Methode fest:

  • Filtername: Erwartet den Namen einer Abfrage, deren WHERE-Abschnitt als Filter verwendet wird.
  • WhereCondition: Erwartet die Angabe eines SQL-Ausdrucks wie Artikelname LIKE ‚A*‘.

Die Eigenschaft Filtername ist also eher für Benutzer gedacht, die SQL-Bedingungen lieber mit der Entwurfsansicht von Abfragen definieren, während WhereCondition die direkt Eingabe der SQL-Bedingung erlaubt.

Schauen wir uns zunächst die Methode mit dem Parameter Filtername genau an. Wir öffnen wiederum den Bericht rptArtikel der Beispieldatenbank in der Seitenansicht. Dieser soll nur diesmal nicht alle Datensätze, sondern nur diejenigen anzeigen, deren Feld Artikelname einen Wert enthält, der mit A beginnt. Die für den Parameter Filtername anzugebende Abfrage bezieht sich optimalerweise auf die gleiche Tabelle, die auch in der Datenherkunft des Berichts verwendet wird, also tblArtikel. Der Bericht entnimmt der Abfrage lediglich die Bedingung. Sie brauchen also nicht etwa alle Felder in das Entwurfsraster zu ziehen, die auch im Bericht erscheinen, sondern nur diejenigen, die in der Bedingung verwendet werden. Wir wollen erstmal nur alle Datensätze anzeigen, deren Artikelname mit A beginnt und erstellen daher eine Abfrage wie in Bild 2. Speichern Sie die Abfrage unter dem Namen qryArtikelMitA und rufen Sie den Bericht dann mit folgender Anweisung auf:

Diese Abfrage dient als Filter eines Berichts und wird mit dem Parameter Filtername übergeben.

Bild 2: Diese Abfrage dient als Filter eines Berichts und wird mit dem Parameter Filtername übergeben.

DoCmd.OpenReport "rptArtikel", View:=acViewPreview, Filtername:="qryFilterNurArtikelMitA"

Das Ergebnis sehen Sie in Bild 3. Es funktioniert – der Bericht zeigt genau die richtigen Datensätze an. Fragt sich, was geschieht, wenn Sie die Datensätze der Abfrage anderweitig einschränken, etwa durch ein Kriterium für ein Feld einer verknüpften Tabelle. Ein Beispiel finden Sie in Bild 4: Dort sollen alle Artikel geliefert werden, die von Kunden gekauft wurden, deren Firmenname mit A beginnt. öffnen wir den Bericht mit folgender Anweisung:

Abfrage, deren Filterkriterium nicht aus der Tabelle stammt, die als Datenherkunft des zu filternden Berichts dient

Bild 3: Abfrage, deren Filterkriterium nicht aus der Tabelle stammt, die als Datenherkunft des zu filternden Berichts dient

Dieser Bericht wurde mithilfe einer für das Kriterium Filter angegebenen Abfrage gefiltert.

Bild 4: Dieser Bericht wurde mithilfe einer für das Kriterium Filter angegebenen Abfrage gefiltert.

DoCmd.OpenReport "rptArtikel", View:=acViewPreview, Filtername:="qryArtikelVonKundeA"

Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar