Access 2007 (または 2010) では、VBA を使用してメイン フォームから、最初のサブフォーム内に埋め込まれたサブフォームのプロパティを設定する必要があります。どのフォームについて話しているかを明確にするために、コードで行っているように、このフォームを「subSubform」と呼びます (実際、subSubform はサブサブフォーム コントロールの名前です)。
フォームが読み込まれると、最初のサブフォームに空白のサブフォーム コントロールがあります (フォーム ソース オブジェクトが含まれていません)。必要に応じて、このコントロールの SourceObject プロパティに、有効なフォームの名前と、LinkMasterFields および LinkChildFields プロパティを入力します。そうでなければ存在しない拡張可能なプラス記号を取得するため、これはすべて正常に機能しているように見えます。
次に、subSubform の RecordSource を設定しようとすると、エラーが発生します。
2455 プロパティ Form/Report への無効な参照を含む式を入力しました。
私が使用しているコードは次のとおりです。
Me!subform1.Form!subSubform.Form.RecordSource = sSubformSQL
'and I've tried this with the same bad results
Me.subform1.Form.subSubform.Form.RecordSource = sSubformSQL
'and this too
Forms("frmQuery").subform1.Form.subSubform!Form.RecordSource = sSubformSQL
'And I've tried this. It fails too, on the last line with the same error:
Dim frm As Form
Set frm = Forms("frmQuery").subform1.Form
Dim frm2 As Form
Set frm2 = frm.subSubform.Form
タイマーを設定して、フォームの読み込みに時間がかかる場合に備えて、上記のコードを実行するのに 1 秒待機してみました。しかし、これは違いはありません。
メイン フォームではなく、最初のサブフォームからコードを実行しようとしましたが、どちらも役に立ちません。それでも同じエラーで失敗します。
FWIW、サブフォームとサブサブフォームの両方が DataSheet ビューです。ここでやろうとしていることに違いはないと思います (ただし、関連するパフォーマンスの問題についてはよく知っているので、怒鳴らないでください)。
おそらく非常に奇妙な要求であることは認識しています。しかし、これを必要とする動的クエリ インターフェイスを作成しています。
subSubform にフォーム プロパティを設定する方法はありますか?