Microsoft Access-Laufzeitfehler 2455, wenn versucht wird, über ein untergeordnetes Formular auf Enkelformulare zuzugreifen

Ich habe drei Formulare in einer Access 2003-Datenbank (in Access 2007 entwickelt), die in einer Beziehung zwischen Eltern -> Kind -> Enkelkind stehen. Im Unterabschnitt 'Form_Load' des untergeordneten Formulars habe ich einige Eigenschaften des Enkelkinds festgelegt (Formularkopf, Zeilenquelle und Steuerlogik). Wenn ich das untergeordnete Formular ansehe, funktioniert alles ordnungsgemäß. Beim Anzeigen des übergeordneten Formulars wird folgende Fehlermeldung angezeigt:

Laufzeitfehler '2455': Sie haben einen Ausdruck eingegeben, der einen ungültigen Verweis auf die Eigenschaft Form / Report enthält.

in bezug auf die zeile:

<code>Me.GrandchildFormName.Form.Foo.Caption = "bar"
</code>

Ich kann auf jedes Eigentum des Enkelformulars zugreifenaußer die Form-Eigenschaft, ohne Fehler auszulösen. Weiß jemand, was dies verursachen könnte? Ich habe einen Testfall in einer neuen Datenbank erstellt, und es hat einwandfrei funktioniert. Daher neige ich dazu, dass der alte Code, den ich mit der Datenbank geerbt habe (der, wie mir gesagt wurde, 18 Jahre zurückreicht, auf einen früheren Zugriff), etwas enthält Datenbanksystem), das das Problem verursacht, aber ich dachte, ich würde hier nachsehen, ob jemand von Ihnen eine Umgehungsmöglichkeit kennt.

Wenn es relevant ist, ist die tatsächliche Struktur der Formulare etwas komplizierter, da das Enkelformular im untergeordneten Formular mehrmals (unter verschiedenen Kontrollnamen) angezeigt wird:

<code>|--------------|
| A            |
|  |----------||
|  | B        ||
|  |  |------|||
|  |  | C[1] |||
|  |  |------|||
|  |          ||
|  |  |------|||
|  |  | C[2] |||
|  |  |------|||
|  |----------||
|--------------|
</code>

Das Problem lässt sich nicht beheben, indem alle Enkelformulare bis auf eines beseitigt werden.

Ich könnte wahrscheinlich Code schreiben, um das Problem zu umgehen, wenn das Enkelformular wissen könnte, unter welchen Instanzen es geladen wird, aber soweit mir bekannt ist, ist dies nicht möglich.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage