FormCurrent wird zu früh ausgeführt?!

Hallo w-w-w-Gemeinde!
Ich habe folgendes Problem:
Aus einem Formular (START) heraus öffne ich mit DoCmdOpenForm ein anderes Formular (MITARBEITER) und bestimme hier auch in der zweiten Zeile die RecordSource für dieses MITARBEITER-Formular.

Im MITARBEITER-Formular selbst habe ich aber „beim Anzeigen“ (FormCurrent) einige Befehle untergebracht (Feld XY zeigen, wenn Bedingung 1 erfüllt etc.).

Nun bekomme ich eine Fehlermeldung (Laufzeitfehler 2424: Der von Ihnen eingegebene Ausdruck enthält einen Feld- etc.-Namen, den die DB nicht finden kann) beim Öffnen des Formulars MITARBEITER.

Ich vermute:
1.
Form Adressen wird geöffnet, OHNE die RecordSouce zunächst zu beachten (also wäre das Formular leer).
2.
Dann wird FormCurrent abgearbeitet (was logischer Weise dann zu einem Fehler führt).
3.
Zur Definition der RecordSource kommt es nun nicht mehr.

Wie kann ich das Problem umgehen?

Es funktioniert, wenn ich die RecordSource bei FormCurrent definiere, dies ist aber nicht praktikabel, da das Form MITARBEITER von den unterschiedlichsten Stellen in der DB mit unterschiedlichen Filterungen (RecordSource) geöffnet werden muss (per ButtonClick).

Hat jemand eine Idee?

Hallo,

Ich habe folgendes Problem:
Aus einem Formular (START) heraus öffne ich mit DoCmdOpenForm
ein anderes Formular (MITARBEITER) und bestimme hier auch in
der zweiten Zeile die RecordSource für dieses
MITARBEITER-Formular.

Im MITARBEITER-Formular selbst habe ich aber „beim Anzeigen“
(FormCurrent) einige Befehle untergebracht (Feld XY zeigen,
wenn Bedingung 1 erfüllt etc.).

Nun bekomme ich eine Fehlermeldung (Laufzeitfehler 2424: Der
von Ihnen eingegebene Ausdruck enthält einen Feld- etc.-Namen,
den die DB nicht finden kann) beim Öffnen des Formulars
MITARBEITER.

Ich vermute:
1.
Form Adressen wird geöffnet, OHNE die RecordSouce zunächst zu
beachten (also wäre das Formular leer).
2.
Dann wird FormCurrent abgearbeitet (was logischer Weise dann
zu einem Fehler führt).
3.
Zur Definition der RecordSource kommt es nun nicht mehr.

Wie kann ich das Problem umgehen?

Es funktioniert, wenn ich die RecordSource bei FormCurrent
definiere, dies ist aber nicht praktikabel, da das Form
MITARBEITER von den unterschiedlichsten Stellen in der DB mit
unterschiedlichen Filterungen (RecordSource) geöffnet werden
muss (per ButtonClick).

Hat jemand eine Idee?

Ja…

solche verquerten Recordsource-Zuweisungen über Object-Grenzen hinweg bleiben lassen…

Anstatt:

Docmd.Openform „Mitarbeiter“,"MAID= " & ME!MaID

auch möglich:

Docmd.Openform „Mitarbeiter“,"select * from tblMitarbeiter where MAID = " & Me!MaID

und im Form „Mitarbeiter“:

Sub Form_Open(Cancel As Integer)
If IsNull(Me.Openargs) Then
Me.Recordsource=„tblMitarbeiter“
Else
Me.Recordsource= Me.Openargs
End If
End Sub

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Super! Danke.

Funktioniert nun bestens!

Viele Grüße an den Bodensee!