更新取消事件之前的 MS Access 不适用于未绑定的组合框
Posted
技术标签:
【中文标题】更新取消事件之前的 MS Access 不适用于未绑定的组合框【英文标题】:MS Access before update cancel event not working for unbound combo box 【发布时间】: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
如果用户选择否。
你可以写下你自己问题的答案。
【参考方案1】:
我刚刚了解到,即使在绑定控件中,组合框值更改后也会触发更新前事件。为了缓解这种情况,我添加了:Me.cboSelectAddress.Undo
如果用户选择否
【讨论】:
以上是关于更新取消事件之前的 MS Access 不适用于未绑定的组合框的主要内容,如果未能解决你的问题,请参考以下文章
MS Access:ConcatRelated 函数适用于源表,但不适用于查询