MS Access FIlter on子表单更改其他字段的值

时间:2016-09-23 11:08:40

标签: vba ms-access filter access-vba

我有一个带有组合框名称Loan_ID_cbo的数据表子表单。每当我通过组合框更新过滤器时,子表单都会使用子表单中选定的Laon ID更新贷款ID(主键),从而更改表格中的数据。

我想只过滤此数据,不允许过滤器编辑表格中的数据。我怎样才能防止这种情况发生?

以下是After_Update事件的VBA代码:

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

1 个答案:

答案 0 :(得分:2)

如果我理解正确,你的组合框就在子表数据表中。因此,组合框出现在每一行上。

确实发生这种情况可能是因为你的组合框被绑定到了Mykey字段。因此,更改组合框确实会改变Mykey的值。

您不应该从子窗体中的myKey字段中创建过滤组合框,您应该在父窗体中创建一个未绑定的组合框:

  1. 在子窗体中,删除此组合框,然后添加一个新文本框并将其绑定到Mykey。
  2. 在您的主窗体上,创建一个新的组合框并使用此组合来过滤您的子窗体。所以代码就像:

    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