您可以使用以下内容打开子表单,设置过滤器,然后指定过滤器。
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
表单上。On Current 代码应在table_clients
表单上。和invoice_id
被client_id
假定为数字。该table_clients
表单包含一个名为 的文本字段txtClientID
。假设该txtClientID
字段引用了主键,table_clients
而client_id
in 字段table_invoices
是对应的外键。
如果您要单击该cmdOpenSubForm
按钮,结果会是:
- 表格将
table_invoices
被打开
- 将
table_invoices
被过滤以显示
表单client_id
中当前存在的所有发票记录table_clients
如果您想进一步限制发票记录而不是添加到过滤器中。