親 - >子 - >孫関係にあるAccess 2003データベース(Access 2007で開発中)に3つのフォームがあります。子フォームの 'Form_Load'サブフォームでは、孫のプロパティ(フォームヘッダー、行ソース、コントロールロジック)を設定します。子フォームを見ると、すべて正常に動作します。私は親フォームを表示すると、私はエラーを取得する:子フォームから孫のフォームにアクセスしようとすると、Microsoft Accessランタイムエラー2455
線を基準でRun-time error '2455': You entered an expression that has an invalid reference to the property Form/Report.
:
Me.GrandchildFormName.Form.Foo.Caption = "bar"
私はいずれかをスローせず Formプロパティ以外孫フォームの任意のプロパティにアクセスすることができますエラー。誰がこれを引き起こしているかも知っていますか?私は新しいデータベースでテストケースを作ったので、正常に動作したので、私はデータベースに継承されたレガシーコードに何かがあることに気を配っています(私は言われましたが、18年前のAccessデータベースシステム)が問題を引き起こしていますが、私はここであなたの誰かが回避策を知っているかどうか確認することにしました。
それは、関連するなら、フォームの実際の構造は、孫のフォームはこのように、子フォームで複数回(異なるコントロール名の下)に表示されると、少し複雑です:
|--------------|
| A |
| |----------||
| | B ||
| | |------|||
| | | C[1] |||
| | |------|||
| | ||
| | |------|||
| | | C[2] |||
| | |------|||
| |----------||
|--------------|
はすべて排除孫のフォームの1つでは問題は解決しません。
孫のフォームがロードされているインスタンスを知る方法があれば問題を回避するコードを書くことができますが、私の知る限り、これは不可能です。ただ、問題のタイプを与えてライン上の
これを説明できますか? – jeremy
これは非常に特殊な状況下でのみ機能しますが、これはOPの問題の一般的な根本的なケースではないようです。 – PhilS