Ich habe einen Bericht der u.a. zwei Unterberichte beinhaltet, die Daten aus unterschiedlichen Tabellen anzeigen. Nun würde ich gerne beim öffnen dieses Berichtes durch das Ereigniss „beim öffnen“ die Datensatzherkunft bzw. RecordSet der beiden Unterformualre anpassen.
Wie kann ich aus einem Bericht den RecordSet der Unterbeichte ansprechen?
ist schon nen bissel her, daß ich das machen mußte. Eine Möglichkeit wäre: me…Recordsource = …
Sollte das nicht gehen ist noch me…Properties(„Name Property“) = … möglich.
Sollte das auch nicht gehen habe ich noch application.reports(„Name Unterbericht“).Recordsource
Geht das auch nicht, schreib die Zuweisung in das Open-Event des Unterberichtes und hol Dir ggf. die Daten mit Me.Parent.
In den Eigenschaften der Unterberichte gibt es die Felder
„Verknüpfen von“
und
„Verknüpfen nach“
(Tipp: Mauscursor rein und F1-Taste drücken für Infos dazu)
über die normalerweise die Beziehung zwischen Bericht und Unterbericht definiert wird.
Komplizierter:
1.in einem Modul globale Variable definieren
Bsp.:
Global gvarMeinHauptbericht As String
Global gvarMeinUnterbericht1 As String
Global gvarMeinUnterbericht2 As String
2.in den Berichten die Datenherkunft auf die Variablen setzen
Bsp.:
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = gvarMeinHauptbericht
End Sub
…im Hauptbericht
Private Sub Report_Open(Cancel As Integer)
Me.RecordSource = gvarMeinUnterbericht1
End Sub
…im Unterbericht1
etc.
3.in der Ereignisprozedur die den Bericht öffnet
den Variablen Werte zuweisen.
z.B.
Private Sub MeinBerichtOeffnenBefehl_Click()
On Error GoTo Err_MeinBerichtOeffnenBefehl_Click
Dim stDocName As String
stDocName = „MeinHauptbericht“
gvarMeinHauptbericht= „Tabelle1“
gvarMeinUnterbericht1 = „select * from Tabelle2 Where MeinLinkFeld=‚A‘“
gvarMeinUnterbericht2 = „select * from Tabelle3 Where MeinLinkFeld2=‚B‘“
DoCmd.OpenReport stDocName, acPreview