您可以使用類似下面的內容打開子表單,設置過濾器,然後指定過濾器。
Private Sub cmdOpenSubForm_Click()
DoCmd.OpenForm "table_clients"
Forms!table_invoices.FilterOn = True
Forms!table_invoices.Filter = "client_id = " & [txtClientID].value
End Sub
而且,如果子窗體處於打開狀態時,主窗體上記錄變化,你可能要重新從子過濾器,然後刷新。這將在On Current
事件的主要形式來完成:
Private Sub Form_Current()
On Error Resume Next
Forms!table_invoices.Filter = "client_id = " & [txtClientID].value
Forms!table_invoices.Refresh
End Sub
在你必須有一個按鈕,名爲cmdOpenSubForm
上面的例子。子表格必須命名爲table_invoices
。該按鈕必須位於table_clients
表單上。當前代碼應該在table_clients
表單上。假設invoice_id
和client_id
是數字。 table_clients
表單包含名爲txtClientID
的文本字段。假設txtClientID
字段引用table_clients
的主鍵,並且table_invoices
中的client_id
字段是對應的外鍵。
如果你要點擊cmdOpenSubForm
按鈕,會是什麼結果是:
- 的
table_invoices
形式將被打開
- 的
table_invoices
會進行過濾以顯示所有發票記錄 的client_id
是當前目前在table_clients
表格
如果你想限制發票記錄比加t他去過濾器。
嗨,我得到一個運行時錯誤438:對象不支持此屬性或方法。 此外,client_id位於invoice_id的父表單上。不應該以某種方式說明嗎? 謝謝! – michalis
我更新了我的答案。我有一個錯誤,應該有一個'!'在Forms和table_invoice之間,而不是'''我還添加了一個更好的解釋。希望它有幫助。 – Linger