You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Access VBA的AfterDelConfirm事件中判断用户删除确认状态

问题说明

我的数据库允许用户删除记录,当前使用的窗体关联了Delete、BeforeDelConfirm和AfterDelConfirm事件。在BeforeDelConfirm与AfterDelConfirm事件之间,系统会弹出提示框询问:“您即将删除1条记录。如果点击是,将无法撤销此删除操作。确定要删除这些记录吗?”(是/否)。我需要在VBA的AfterDelConfirm事件中判断用户选择的选项,仅在用户确认删除时,将被删记录插入Audit_Table。但现有代码无论用户选择如何都会执行插入操作,现有代码如下:

Dim Global_ModelKey As Integer      'used to store temporarily the ModelKey value 

Private Sub Form_Delete(Cancel As Integer)
Global_ModelKey = Me.modelKey.Value
End Sub

Private Sub Form_AfterDelConfirm(Status As Integer)
'--- SQL command ---
sql = '<sql command>
'--- display message with the SQL command to check syntax ---
result = MsgBox(sql, vbOK, "SQL check", "", 1000)

DoCmd.SetWarnings False
DoCmd.RunSQL (sql)
DoCmd.SetWarnings True

Global_ModelKey = 0
End Sub
解决方法

AfterDelConfirm事件的Status参数直接反映了用户的操作结果,它的关键取值如下:

  • acDeleteOK(值为0):用户确认执行删除
  • acDeleteCancel(值为1):用户取消删除

只需通过判断Status的值,仅在其等于acDeleteOK时执行插入Audit_Table的SQL命令,即可实现需求。

修改后的代码如下:

Dim Global_ModelKey As Integer      ' 临时存储ModelKey值

Private Sub Form_Delete(Cancel As Integer)
    Global_ModelKey = Me.modelKey.Value
End Sub

Private Sub Form_AfterDelConfirm(Status As Integer)
    ' 仅当用户确认删除时执行审计插入操作
    If Status = acDeleteOK Then
        ' --- SQL命令 ---
        sql = "<sql command>"
        ' --- 弹出消息检查SQL语法 ---
        result = MsgBox(sql, vbOK, "SQL检查", "", 1000)
        
        DoCmd.SetWarnings False
        DoCmd.RunSQL (sql)
        DoCmd.SetWarnings True
    End If
    
    Global_ModelKey = 0
End Sub

内容的提问来源于stack exchange,提问作者Lubomir Burian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:45:31