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

Access导航窗体层级中Contratto字段AfterUpdate事件失效求助

Access窗体字段AfterUpdate事件未触发排查

问题场景

窗体层级结构(从高到低):

  • 主窗体:Navigation mask(意大利语名称:Maschera di spostamento)
  • 子窗体1:SubformNavigation(意大利语名称:SottomascheraSpostamento)
  • 子窗体2:Purchase documents(采购单据)
  • 目标字段:Contratto(控件源绑定为“Top Contract”)

为该字段编写的AfterUpdate事件代码:

Private Sub Contratto_Afterupdate()
If Forms![Maschera di spostamento].Form!SottomascheraSpostamento!Contratto.Value = "2270100831" Then
    MsgBox "Attenzione Per questo contratto è necessario un aumento del 8,9% del consuntivo.", vbCritical, "Attenzione"
Else
    MsgBox "errore"
End If
End Sub

问题现象

  • Contratto字段的AfterUpdate事件未触发,消息框不显示
  • 尝试改用On Change事件无效
  • 新增绑定该字段值的文本框并添加AfterUpdate事件,同样无效

排查与解决步骤

1. 确认控件事件绑定正确性

打开Purchase documents窗体设计视图,选中Contratto控件:

  • 右键→属性→切换到事件选项卡
  • 检查更新后(AfterUpdate)事件下拉框是否选择[事件过程],点击右侧...能直接打开编写的代码(排除绑定错误或未关联代码的情况)

2. 修正控件引用路径

代码中跨多层窗体引用控件容易出错,Contratto本身就在当前窗体中,直接用Me引用更可靠:

Private Sub Contratto_AfterUpdate()
    If Me.Contratto.Value = "2270100831" Then
        MsgBox "Attenzione Per questo contratto è necessario un aumento del 8,9% del consuntivo.", vbCritical, "Attenzione"
    Else
        MsgBox "errore"
    End If
End Sub

3. 检查控件编辑权限

  • 确认Contratto控件的控件来源为Top Contract,是否锁定设为否,是否有效设为是
  • 控件锁定或无效时,用户无法修改值,不会触发AfterUpdate事件

4. 验证窗体记录源可更新性

  • 确认Purchase documents窗体的记录源是可更新的表或查询(不可更新的查询会导致字段值无法修改,事件不触发)
  • 检查当前记录是否为新建记录或只读状态

5. 测试基础事件触发

先编写最简代码验证事件是否正常:

Private Sub Contratto_AfterUpdate()
    MsgBox "事件触发成功!当前值:" & Me.Contratto.Value
End Sub

若能弹出消息,说明事件本身正常,再逐步添加原逻辑判断

6. 排查阻止事件的其他代码

  • 查看窗体加载(Load)、打开(Open)事件中是否有代码设置控件Enabled或Locked为True
  • 检查是否存在全局错误处理代码(如On Error Resume Next)屏蔽了事件执行错误

内容的提问来源于stack exchange,提问作者Roberto Sola

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 11:32:35