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

求助:通过VBA实现表间记录复制与原记录删除

Access自动迁移记录的VBA实现方案

可以通过VBA编写自定义过程,一键完成筛选Datum_Weiterg非空记录、追加到Ordner_Liste、从原表删除已迁移记录三个步骤,替代每日手动操作。

完整VBA代码

将以下代码复制到Access的模块中:

Sub MigrateCompletedRecords()
    Dim db As DAO.Database
    Dim strAppendSQL As String
    Dim strDeleteSQL As String
    
    On Error GoTo ErrorHandler
    
    ' 引用当前数据库
    Set db = CurrentDb
    
    ' 1. 构建追加SQL:将符合条件的记录插入目标表
    strAppendSQL = "INSERT INTO Ordner_Liste " & _
                   "SELECT * FROM Abgabe_Unterlagen " & _
                   "WHERE Datum_Weiterg IS NOT NULL AND Datum_Weiterg <> ''"
    
    ' 执行追加操作
    db.Execute strAppendSQL, dbFailOnError
    Debug.Print "成功追加 " & db.RecordsAffected & " 条记录到Ordner_Liste"
    
    ' 2. 构建删除SQL:移除原表中已迁移的记录
    strDeleteSQL = "DELETE FROM Abgabe_Unterlagen " & _
                   "WHERE Datum_Weiterg IS NOT NULL AND Datum_Weiterg <> ''"
    
    ' 执行删除操作
    db.Execute strDeleteSQL, dbFailOnError
    Debug.Print "成功从Abgabe_Unterlagen删除 " & db.RecordsAffected & " 条记录"
    
    MsgBox "记录迁移完成!", vbInformation
    
ExitSub:
    Set db = Nothing
    Exit Sub
    
ErrorHandler:
    MsgBox "操作出错:" & Err.Description, vbCritical
    Resume ExitSub
End Sub

关键说明

  • 筛选逻辑:WHERE Datum_Weiterg IS NOT NULL AND Datum_Weiterg <> '' 同时处理日期字段为Null和空字符串的情况,避免遗漏符合要求的记录。
  • 数据安全:dbFailOnError 参数会在SQL执行失败时触发错误提示,配合错误处理分支,防止出现数据不一致的情况。
  • 执行顺序:必须先完成追加再执行删除,防止记录丢失。

使用方式

  1. 打开Access数据库,按下Alt + F11打开VBA编辑器。
  2. 插入新模块:右键点击数据库对象 → 插入 → 模块。
  3. 粘贴代码并保存模块。
  4. 可直接在VBA编辑器中运行该过程,也可在表单添加按钮并绑定此宏,实现一键操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:19:51