【问题标题】:MS Access before update cancel event not working for unbound combo box更新取消事件之前的 MS Access 不适用于未绑定的组合框
【发布时间】:2019-10-02 04:42:13
【问题描述】:

我在 Access 中有一个组合框,它有一个绑定到表的行源,但不与表单共享相同的记录源。我希望用户能够从下拉框中选择项目,但我想在他们更改内容之前给他们一个警告,如果他们说不,然后撤消这样的更改:

Private Sub cboSelectAddress_BeforeUpdate(Cancel As Integer)
    Dim rs As New ADODB.Recordset
    Dim prevAddress As String

    'prevAddress = Me.cboSelectAddress.Value

    If MsgBox("Are You sure you want to change the value of the combo box?", vbQuestion + vbYesNo + vbDefaultButton2, "CTNO change altert") = vbYes Then

        'DO SOMETHING
    Else
        'Me.cboSelectAddress.Value = prevAddress
        Cancel = True
    End If

End Sub

只要我更改组合框的值,组合框的值就会发生变化,然后才会触发 before_update 事件。

为了缓解这种情况,我尝试在更改之前存储地址框的值,并在用户选择 NO 时将其设置回原始值,但这也会产生错误,因为它会尝试通过之前的更新事件本身。如您所见,我已将那部分代码注释掉。

【问题讨论】:

  • 您是否进行了步进调试?您将看到 prevAddress 正在接收输入的新值,而不是旧值。因此,即使您没有收到错误,也不会将组合框设置为先前的输入。
  • 是的,你是对的,刚刚意识到这一点
  • 为什么需要对 UNBOUND 控件的用户输入进行微观管理?
  • 我刚刚了解到,即使在绑定控件中,组合框值更改后也会触发更新前事件。为了缓解这种情况,我添加了:Me.cboSelectAddress.Undo 如果用户选择否。
  • 你可以写下你自己问题的答案。

标签: vba ms-access


【解决方案1】:

我刚刚了解到,即使在绑定控件中,组合框值更改后也会触发更新前事件。为了缓解这种情况,我添加了:Me.cboSelectAddress.Undo 如果用户选择否

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 1970-01-01
    • 2011-01-04
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多