我有一个Table table_clients和一个连接表(1 - >很多)table_invoices。
我有两种形式:
form1(table_clients):具有subform1(table_invoices)的所有客户:每个客户的所有发票
form2和subform2是相同的,只是对象在页面上的放置方式不同。
我希望当我在form1 / subform1上打开一条记录时,能够单击一个按钮并打开由invoice_id和client_id过滤的form2 / subform2。
谢谢!
答案 0 :(得分:0)
您可以使用以下内容打开子表单,设置过滤器,然后指定过滤器。
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
中的table_invoices
字段是相应的外键。
如果您点击cmdOpenSubForm
按钮,结果是:
table_invoices
表格将被打开table_invoices
以显示所有发票记录
对于client_id
中当前存在的table_clients
形式如果要进一步限制发票记录,请将其添加到过滤器。