Gibt es trotzdem einen Namen, aus dem der Bericht aufgerufen wurde? Ich möchte im Bericht einen VBA-Code schreiben, um festzustellen, woher der Bericht stammt. Ich habe Zugriff 2003.Zugriffsbericht: Ermitteln des Formulars, von dem aus der Bericht aufgerufen wurde
Antwort
Sie können einen Bericht wie folgt geöffnet:
DoCmd.OpenReport "reportFoo", acPreview, , , , Me.Name
und so etwas wie dies in dem Bericht:
Private Sub Report_Open(Cancel As Integer)
If "" <> Me.OpenArgs Then
MsgBox Me.OpenArgs ' display caller form's name
End If
End Sub
Dies ist nicht möglich, es sei denn, Sie richten es selbst ein. Sie könnten in eine Variable schreiben oder, wenn das Formular offen bleibt, die Informationen im Formular speichern.
Umm, wenn er nicht weiß, welche Form den Bericht öffnet, wie kann er den Formularnamen im Bericht speichern? –
Sorry, aber ich verstehe Ihren Punkt nicht, ich sagte, speichern Sie die Informationen auf dem Formular, wenn das Formular geöffnet bleibt, können die Formulare aus dem Bericht überprüft werden, oder das Formular und der Bericht Name werden in eine Variable geschrieben, yesno? – Fionnuala
Eine Möglichkeit, eine report_caller Klasse haben, ist, dass alle Berichte immer geöffnet. Es benötigt eine Methode namens "openReport", die den Namen des Formulars übernimmt, das den Aufruf ausführt, und den Namen des geöffneten Berichts. Dann kann eine öffentliche Methode verwendet werden, damit der Bericht den Namen des geöffneten Formulars erhält.
Ich habe es auf Ms Access 2003 getestet, bevor ich es poste. –
Der OpenArgs-Parameter war in Access vor 2002 nicht vorhanden, denke ich (ich bin mir nicht sicher, ob es 2002 war, es wurde 2003 eingeführt). –