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

迁移至SQL Server后Access链接表RecordSet.Update报错求助

Access链接SQL Server链接表RecordSet.Update报错解决方案

问题场景

将Access数据库通过SQL Migration Assistant迁移至SQL Server后,操作Access图形界面的链接表时,原有代码在Activity.Update处报错ODBC--Call failed on RecordSet。

原代码:

Dim Activity As RecordSet

Set Activity = CurrentDb.OpenRecordset("UserActivity")
        
Activity.AddNew

Activity!ActivityType = "Login To Afya DB"
Activity!RefDocument = Me.Name
Activity!Description = "User Has Seen Home_Page"
Activity!UserName = Me.txtUserName.Value
Activity!ActionedOn = Format(Now(), "dd/mm/yyyy")
         
Activity.Update

已尝试添加dbSeeChanges参数,但问题未解决:

Dim Activity As RecordSet

Set Activity = CurrentDb.OpenRecordset("UserActivity", dbOpenDynaset, dbSeeChanges)
        
Activity.AddNew

Activity!ActivityType = "Login To Afya DB"
Activity!RefDocument = Me.Name
Activity!Description = "User Has Seen Home_Page"
Activity!UserName = Me.txtUserName.Value
Activity!ActionedOn = Format(Now(), "dd/mm/yyyy")
         
Activity.Update

排查与解决步骤

  • 检查SQL Server表主键配置:确保UserActivity表在SQL Server中已设置主键,若主键为自增标识列(Identity),需确认Access链接表已正确识别该属性,迁移过程中主键丢失或未配置会直接导致更新失败。
  • 修正日期赋值方式:代码中用Format将日期转为字符串赋值给SQL Server日期字段,易引发类型不匹配,直接赋值日期类型即可:
    Activity!ActionedOn = Date() ' 需保留时间则用Now()
    
  • 显式声明DAO.Recordset:避免与ADODB对象冲突,变量声明修改为:
    Dim Activity As DAO.Recordset
    
  • 更新ODBC驱动与链接属性:使用最新版SQL Server ODBC驱动(如ODBC Driver for SQL Server),并在Access链接表属性中勾选“允许编辑”“返回匹配的行”选项。
  • 捕获详细错误信息:添加错误捕获代码获取具体ODBC错误详情,便于精准定位:
    On Error GoTo ErrorHandler
    ' 原有业务代码
    Exit Sub
    

ErrorHandler:
MsgBox "错误编号: " & Err.Number & vbCrLf & "错误描述: " & Err.Description & vbCrLf & "ODBC详情: " & DBEngine.Errors(0).Description
Resume Next

内容的提问来源于stack exchange,提问作者Richard Mahendeka
相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 04:50:28