Access 2003 データベース (Access 2007 で開発中) に、親 -> 子 -> 孫の関係にある 3 つのフォームがあります。子フォームの「Form_Load」サブで、孫のいくつかのプロパティ (フォーム ヘッダー、行ソース、および制御ロジック) を設定します。子フォームを表示すると、すべてが正常に機能します。親フォームを表示すると、次のエラーが表示されます。
実行時エラー '2455': プロパティ Form/Report への無効な参照を含む式を入力しました。
行を参照して:
Me.GrandchildFormName.Form.Foo.Caption = "bar"
Form プロパティを除く孫フォームのすべてのプロパティにアクセスできますが、エラーは発生しません。誰がこれを引き起こしているのか知っていますか? 私は新しいデータベースでテストケースを作成し、それはうまく機能したので、データベースで継承したレガシーコードに何かがあることに傾いています(これは18年前にアクセス前に戻ると言われていますデータベース システム) が問題を引き起こしていますが、回避策を知っている人がいるかどうかを確認するためにここをチェックすると思いました。
関連する場合、フォームの実際の構造はもう少し複雑で、次のように、孫フォームが子フォームに (異なるコントロール名で) 複数回表示されます。
|--------------|
| A |
| |----------||
| | B ||
| | |------|||
| | | C[1] |||
| | |------|||
| | ||
| | |------|||
| | | C[2] |||
| | |------|||
| |----------||
|--------------|
1 つを除くすべての孫フォームを削除しても、問題は解決しません。
孫フォームがどのインスタンスとしてロードされているかを知る方法があれば、おそらく問題を回避するコードを書くことができますが、私が知る限り、それは不可能です。