4

メインフォームに2つのサブフォームがあります。Sub_2 は、sub_1 で選択したアイテムの詳細をリストに表示します。両方のサブフォームで、continue フォームを使用します。これらは 2 つのクエリにバインドされており、1 つのフィールドが共通しています。たとえば、「id」です。

私がやったことは、sub_1のDClickイベントにコードを追加して、sub_2のフィルターを次のように設定することです

Me.Parent.sub_2.Form.Filter = "id=" & "'" & Me.Recordset!id & "'"

その後、再クエリ

Me.Parent.sub_2.Form.Requery

しかし、sub_1 のレコードをダブルクリックしても、sub_2 は変化しません。関連する質問を見てきましたが、これでうまくいくはずです...

助言がありますか?これを行うには、他のアプローチを使用する必要がありますか?

PS: 確かMe.Parent.sub_2.Filterに変更されていますが、再クエリは機能しません。

編集:

回答ありがとうございます。問題は、「id」フィールドがクエリにあるのですが、サブフォームに表示されないため、Access で使用できない可能性があります。

また、フィルターが変更されると、Access は自動的に再クエリを実行します。

4

3 に答える 3

5

filterプロパティで何もする必要はありません。

最初のサブフォームで、フォームの通常の単一のサブフォームコントロールの場合と同じように、[リンクマスターフィールド]プロパティと[リンク子フィールド]プロパティを設定します。

2番目のサブフォームについても、通常の単一のサブフォームコントロールの場合と同じように、LinkChildFieldsプロパティを設定します。Link Master Fieldsプロパティは、最初のサブフォームのコントロール名[Subform 1 Control Name]!FieldNameを参照します。

最初のサブフォームコントロールのOnCurrentイベントで、VBAコードの次の行を追加します。

Me.Parent.Controls![Subform 2 Control Name].Requery

フォームを実行します。最初のサブフォームの行をクリックすると、2番目のサブフォームが再クエリを実行して、最初のサブフォームで選択された行の子行を表示します。

于 2011-05-16T13:53:04.927 に答える
2

Filter 式を割り当てた後、FilterOn プロパティを True に設定します。

Me.Parent.sub_2.Form.Filter = "id=" & "'" & Me.Recordset!id & "'"
Me.Parent.sub_2.Form.FilterOn = True
于 2011-05-16T13:34:37.150 に答える
0

次のようなものが必要になります。

Me!Subform2.Form.Requery  
'or  
Forms!Mainform!Subform1.Form!Subform2.Form.Requery

これをテストする時間がなかったので、Subform1 と Subform2 が実際のサブフォームの名前なのか、それとも単なるサブフォーム コントロール/コンテナーの名前なのかはわかりません。後者だと思います。

この種の質問の優れた情報源は次のとおりです:
http://access.mvps.org/access/forms/frm0031.htm

そのページに対する私の唯一の不満は、メソッド、サブルーチン/関数の呼び出し、またはパブリック変数の参照をカバーしていないことです。これらはすべて、そこにリストされているシナリオとは少し異なります (または異なる可能性があります)。

于 2011-05-16T12:41:20.003 に答える