我有一个数据表子表单,其组合框名称为Loan_ID_cbo。每当我通过组合框更新过滤器时,子表单都会使用子表单中选择的Laon ID更新Loan ID(主键),从而更改表上的数据。
我想只过滤这个数据,不允许过滤器编辑表上的数据。我怎样才能避免这种情况的发生?
这是我的VBA代码After_Update事件:
Private Sub Loan_ID_cbo_AfterUpdate()
Application.Echo False
Me.Filter = "MyKey = '" & Loan_ID_cbo & "'"
Me.FilterOn = True
If Loan_ID_cbo = "" Then
Me.Filter = ""
Me.FilterOn = False
End If
Application.Echo True
End Sub
如果我理解正确,您的组合框在子表单数据表中。因此,组合框出现在每一行。
这可能是因为您的组合框绑定到Mykey字段。所以改变组合框会改变Mykey的值
您不应该在子表单中的myKey字段中创建过滤组合框,您应该在父表单中创建未绑定的组合框:
- 在子表单中,删除这个组合框,并添加一个新的文本框并将其绑定到Mykey。
-
在主表单上创建一个新的组合框,并使用这个组合框来过滤子表单。所以代码应该是这样的:
Private Sub Loan_ID_cbo_AfterUpdate() Application.Echo False Me.subformname.Form.Filter = "MyKey = '" & Loan_ID_cbo & "'" Me.subformname.Form.FilterOn = True If Loan_ID_cbo = "" Then Me.subformname.Form.Filter = "" Me.subformname.Form.FilterOn = False End If Application.Echo True End Sub