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

如何使用IF语句跟踪其他用户对Access表的数据修改并添加时间戳

Access订单修改审计追踪实现方案

1. 搭建审计日志存储表

首先在Access数据库中新建专门的订单修改日志表,命名为OrderAuditLog,字段配置如下:

  • LogID:自动编号,设为主键
  • OrderID:与订单表主键字段类型一致,用于关联被修改的原始订单
  • FieldName:短文本,存储被修改的字段名称
  • OldValue:长文本,存储修改前的字段原始值
  • NewValue:长文本,存储修改后的字段新值
  • ChangeDate:日期/时间类型,默认值设为Now(),自动写入修改发生的时间
  • ChangedBy:短文本,默认值设为CurrentUser(),自动记录修改操作的账号

2. 绑定表单修改触发事件

打开订单录入的Access表单,进入设计视图,绑定BeforeUpdate事件,写入如下VBA代码,实现修改自动留痕:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Dim ctrl As Control
    Dim logRs As DAO.Recordset
    
    ' 仅针对已有订单的修改操作触发,新增订单时不记录
    If Not Me.NewRecord Then
        Set logRs = CurrentDb.OpenRecordset("OrderAuditLog", dbOpenDynaset)
        ' 遍历表单所有可输入控件,对比新旧值
        For Each ctrl In Me.Controls
            If (ctrl.ControlType = acTextBox Or ctrl.ControlType = acComboBox Or ctrl.ControlType = acCheckBox) _
                And Nz(ctrl.Value, "") <> Nz(ctrl.OldValue, "") Then
                ' 写入变动记录到日志表
                logRs.AddNew
                logRs!OrderID = Me!OrderID ' 此处替换为你订单表的主键字段名
                logRs!FieldName = ctrl.ControlSource
                logRs!OldValue = ctrl.OldValue
                logRs!NewValue = ctrl.Value
                logRs.Update
            End If
        Next ctrl
        logRs.Close
        Set logRs = Nothing
    End If
End Sub

所有通过表单提交的订单修改操作,都会自动触发日志写入,不需要人工干预。

3. 截止时间修改监控配置

假设你每周的订单提交截止时间为周五18:00,可按如下方式实现超时修改的重点监控:

  • 在Excel的自动查询中新增OrderAuditLog表的同步任务,同步频率和原有订单查询保持一致
  • 新增计算列判断修改是否超时,公式参考:
    =IF(OR(WEEKDAY([@ChangeDate],2)>5,AND(WEEKDAY([@ChangeDate],2)=5,HOUR([@ChangeDate])>=18)),"超时修改","正常修改")
    
  • 搭配Excel条件格式,将标记为「超时修改」的记录高亮标红,也可设置数据有效性提醒,每次刷新有新的超时修改时自动弹窗提示。

可选拓展配置

如果需要严格禁止截止时间后的订单修改,可以在上述BeforeUpdate事件开头增加时间校验逻辑,符合超时条件时直接Cancel = True终止修改操作,并弹出提示要求联系调度员申请。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 20:24:04