Sitemap Fernwartung Impressum
Online Tipps & Tricks
Berichte flexibler einsetzen mit Recordsets (Access)
01.01.2011

Berichte flexibler einsetzen mit Recordsets
Versionen: Access 97, 2000 und 2002

Ein Bericht verfügt bekanntlich über die Eigenschaft "RecordSource", über die eine Tabelle oder Abfrage definiert wird, die dem Bericht als Datenbasis zugrunde liegt. Die entsprechenden Einstellungen nehmen Sie im Berichts-Entwurf im Eigenschaftenfenster des Berichtes über die Eigenschaft "Datenherkunft" vor.

Wenig bekannt ist die Tatsache, dass diese Einstellung nicht nur im Entwurfsmodus, sondern auch zur Laufzeit per VBA gesetzt werden kann. So ist es zum Beispiel möglich, die Kriterien für einen Bericht in einem Formular vom Anwender einstellen zu lassen, um dann nach einem Klick auf eine "Drucken"-Schaltfläche zunächst das passende Recordset zu erstellen, eine Referenz darauf in einer globalen Variablen zu hinterlegen und dann den entsprechenden Bericht zu öffnen. Dieser Bericht beinhaltet in der Ereignis-Prozedur "Report_Open" eine Anweisung, die den Recordset aus der globalen Variablen als Datenbasis zuordnet.

Grundlage ist zunächst eine in einem beliebigen Modul angelegte, globale Variable "rsBericht" vom Datentyp "Recordset", die später als Referenz auf das Recordset dient. Dieses Recordset initialisieren Sie in einem Formular, über das beispielsweise für eine landesspezifische Telefonliste von Kunden das gewünschte Land aus einem Kombinationslistenfeld ausgewählt und dann auf eine entsprechende Schaltfläche geklickt wird:

Private Sub btnTest_Click()
Dim strX As String
Dim db As Database, strSQL As String

On Error Resume Next
strX = Me.clLand
If Err <> 0 Then 'Kein Land eingestellt...
Beep
Exit Sub
End If
On Error GoTo 0

strSQL = "select * from Kunden where [Land]= '" & _
strX & "' order by Firma;"

Set db = CurrentDb()

Set rsBericht = db.OpenRecordset(strSQL)

DoCmd.OpenReport "Kunden", acViewPreview

rsBericht.Close
Set rsBericht = Nothing

End Sub

Das so initialisierte Recordset wird beim Öffnen des Berichtes per "DoCmd.OpenReport" automatisch über die Ereignisprozedur "Report_Open" gesetzt:

Private Sub Report_Open(Cancel As Integer)

On Error Resume Next
Me.RecordSource = rsBericht.Name
If Err <> 0 Then
Beep
MsgBox "Variable 'rsBericht' nicht gesetzt, " & _
"Bericht kann nicht angezeigt werden..."
Cancel = True
End If

End Sub

Kommt es hier bei der Zuweisung des Recordsets zu einem Fehler, so ist die globale Variable "rsBericht" nicht gesetzt (Inhalt = Nothing). Wir geben dann eine entsprechende Fehlermeldung aus und brechen das Öffnen des Berichts über die Zuweisung "Cancel = True" ab.

Eine allgemeingültige Schritt-für-Schritt-Anleitung für den Einsatz dieser Lösung in Ihren eigenen Datenbanken können wir aufgrund der zu unterschiedlichen Datenbankstrukturen nicht geben. Wenn Sie sich aber an die folgenden Vorgehensweise halten, dürfte die Umsetzung keine Probleme bereiten:


Deklaration einer globalen Variablen "rsBericht" oder ähnlich in einem beliebigen Modul.

Einfügen der oben gezeigten Anweisungen in die Ereignis-Prozedur "Report_Open" des betreffenden Berichtes.

Erstellen eines Formulars mit den entsprechenden Steuerelementen für die Auswahl eines oder mehrerer Kriterien.

Anlegen einer Schaltfläche "Drucken" oder ähnlich und Erstellen einer Ereignis-Prozedur "Beim Klicken", in der die Zusammensetzung einer SQL-Abfrage gemäß Einstellungen im Formular, die Initialisierung des Recordsets und das Öffnen des betreffenden Berichtes erfolgt.

Öffnungszeiten
Ladengeschäft:
Montag bis Donnerstag
15:00-18:00 Uhr
Freitag
8:30:13:00 Uhr
Samstag
nach Terminvereinbarung

Wir vereinbaren auch
gerne Termine über unsere
Öffnungszeiten hinaus.

Telefon:
06723 889005

Telefax:
06723 889006

E-Mail:
info@tibe.de

Adresse:
Tibe Services
Inhaber: Tim Berlebach
Zangerstraße 22
65375 Oestrich-Winkel /
Ortsteil Hallgarten

Öffentlicher Parkplatz:
Taunusstraße/
Ecke Zangerstraße


 Preisänderungen und Irrtümer bleiben vorbehalten.  Angebot gilt solange Vorrat reicht!

© 1996-2024 Tibe Services Tim Berlebach, Zangerstraße 22, 65375 Oestrich-Winkel,
Tel: 06723 889005, Fax: 06723 889006, E-Mail: info(at)tibe.de, Internet: www.tibe.de