2011-05-16 130 views
4

我在主窗體上有2個子窗體。 Sub_2在列表中顯示在sub_1中選擇的項目的詳細信息。對於這兩個子表單,我使用連續表單,並且它們被限制爲2個查詢,並且有一個共同的字段,如'id'。Requery子窗體從另一個子窗體,問題

我所做的是對sub_1在D單擊事件添加代碼來設置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

您不需要對filter屬性進行任何操作。

在第一個子窗體上,設置「鏈接主字段」和「鏈接子字段」屬性,就像您在窗體上使用常規的單個子窗體控件一樣。

對於第二個子窗體,還可以像爲常規的單個子窗體控件一樣設置Link Child Fields屬性。鏈接主字段屬性將引用第一個子窗體的控件名稱:[Subform 1 Control Name]!FieldName。

在第一子控件的成爲當前事件,添加的VBA下面一行代碼:

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

運行的形式。當您單擊第一個子窗體中的行時,第二個子窗體將重新查詢以顯示在第一個子窗體中選定的行的子行。

+0

這是個好主意。有用。 – darkjh 2011-05-17 06:39:44

+0

我發現上面的解決方案無法進行一些修改 - 它需要是「Me.Parent.Controls!SubformName.Form.Requery」(即插入一個Form.') – 2015-12-11 22:51:09

0

你會需要像下面這樣:

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

我沒有時間來測試這個,所以我不能告訴你肯定如果Subform1和Subform2應的名稱實際子窗體或僅子窗體控件/容器。我認爲這是後者。

下面是這類問題的極好來源:
http://access.mvps.org/access/forms/frm0031.htm

我與網頁唯一的抱怨是,他們不包括調用方法,潛艇/功能,或指公共變量。所有這些都(或可能)與這裏列出的情景略有不同。

2

在分配過濾器表達式後,將FilterOn屬性設置爲True。

Me.Parent.sub_2.Form.Filter = "id=" & "'" & Me.Recordset!id & "'" 
Me.Parent.sub_2.Form.FilterOn = True 
相關問題