2012-02-05 32 views
1

假設我有兩個表,tblAtblB,它們具有1:n的關係,即對於tblA中的給定記錄,在tblB中可以有許多記錄。MS Access:如何通過基於當前記錄的命令按鈕打開表單?

現在我有一個表格,frmA,這是基於tblA。在此表單上有一個命令按鈕,可打開第二個表單frmB,該表單基於tblB。現在我希望第二個表單frmB只顯示tblBtblA的當前記錄匹配的記錄。 我發現有一種內置的方式(我使用Access 2010),用於過濾來自tblB的數據。但是由於在frmB之內,我需要根據當前記錄做更多的東西,這還不夠。 那我該怎麼做呢?

我想創建一個查詢,qryAB,做一個內部聯接,並有一個參數從tblA中選擇某個記錄。但是,如何將這個查詢傳遞給用作我的命令按鈕的點擊式宏(或vba)中的參數?

回答

2

您可以使用OpenForm method的Where參數,您可以將OpenArgs添加到OpenForm中,並且您可以引用代碼中已經打開的表單。這完全取決於你接下來要做什麼。

+0

我會嘗試更詳細的描述:表A包含有關業務夥伴的數據。表格A顯示了這些信息(連同聯繫人的子表單)。現在對於來自表AI的每條記錄,都需要一個命令按鈕來打開一個新表單(彈出窗口),該表單只列出來自表B的與當前A記錄相對應的條目(協議)。在此表單上,我還需要一個combo-該框基於當前選擇並用於在表格B中顯示的記錄中導航(例如,與業務夥伴達成協議的所有年份的組合框).. – janitor048 2012-02-06 17:45:07

+0

如果formB始終從formA打開,可以將組合的行源設置爲,例如,「從表中選擇AFERE字段=表單!formA!SomeControl」。但是,根本不需要引用表單,畢竟表單現在只顯示id與formA匹配的記錄,因此您的行源可以引用formB ID。最後,您可以將引用作爲OpenArg傳遞,並通過代碼構建組合。作爲一般規則,我儘量避免不能單獨工作的表單,並嘗試根據當前表單提供的信息構建組合工具。 – Fionnuala 2012-02-06 17:55:21

+0

使用OpenForm方法和適當的select語句似乎可以完成這項工作。然後我可以使表單B上的組合框基於該表單上的可用信息。我對Access並不熟悉,有時甚至有些失落,以至於哪種方式可以做到最好......感謝您的幫助! – janitor048 2012-02-07 09:46:46

1

你有沒有考慮過讓frmb成爲frma的子表單並且使用父子關係。

+0

我已經考慮過了,但我不認爲在我的情況下(請參閱我對Remou的回答的評論),這正是我想要的。 – janitor048 2012-02-06 17:51:15

相關問題