Runtime Error 3622:dbSeeChanges在VBA代码中的添加位置及原因
问题解决:Runtime Error 3622 修复方案
代码修改位置
在OpenRecordset方法中添加dbSeeChanges参数,修改后的完整代码如下:
Public Sub LogIt(description As String, Optional notes As String = "") Dim userID As Long Dim RecordID As Long Dim LeadProvider As Long Dim db As Database Dim rs As Recordset userID = Nz(Forms!mainmenuf!UserIDtxt) RecordID = Nz(Forms!recordviewertemplatef!RecordID) Set db = CurrentDb() ' 新增dbSeeChanges选项 Set rs = db.OpenRecordset("logt", dbOpenDynaset, dbSeeChanges) rs.AddNew rs!userID = userID rs!RecordID = RecordID rs!description = description If notes <> "" Then rs!notes = notes rs.Update rs.Close Set rs = Nothing Set db = Nothing End Sub
原因说明
- 你的SQL Server后端
logt表包含identity列(自动递增主键),Access通过VBA操作这类表时,必须显式启用dbSeeChanges选项。 - 该选项的核心作用是让Access能够读取SQL Server自动生成的identity值,确保新增记录时同步主键信息,避免因无法获取自动生成的ID而触发3622错误。
- 手动创建记录时Access会自动处理identity列的逻辑,但通过
OpenRecordset编程操作时必须显式声明该参数,否则会出现权限/同步类错误。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

