您可以使用以下内容打开子表单,设置过滤器,然后指定过滤器。
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_idin 字段table_invoices是对应的外键。
如果您要单击该cmdOpenSubForm按钮,结果会是:
- 表格将
table_invoices被打开
- 将
table_invoices被过滤以显示
表单client_id中当前存在的所有发票记录table_clients
如果您想进一步限制发票记录而不是添加到过滤器中。