我在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
,则将其设置回原始值,但这也会产生错误,因为它尝试通过更新前的事件本身。如您所见,我已经注释掉了那部分代码。
我刚刚了解到即使在绑定控件中,组合框值更改后也会触发before update事件。为了减轻这种情况,我添加了:Me.cboSelectAddress.Undo
如果用户选择否