添加记录后用TempVars跳转指定记录时出现2105错误求助
解决Access中"2105: 无法转到指定记录"错误的方案
我来帮你搞定这个问题!你遇到的2105错误核心原因有两个——一是获取新记录ID的时机不对,二是用错了跳转记录的方法,咱们一步步修正:
问题根源分析
- ID获取时机错误:你在
.AddNew之后直接取!ID.Value,这时候记录还没执行.Update,自动编号的ID根本还没生成,存到TempVars里的是无效值。 - 跳转方法用错:
DoCmd.GoToRecord的最后一个参数是相对于当前记录的偏移量,不是记录ID!你直接传ID进去,Access找不到对应偏移的记录,自然报错。 - 刷新方式不对:
Refresh只会更新现有记录的显示,不会把新插入的记录加载到目标窗体的记录集里。
修正后的完整代码
Private Sub btnSave_Click() Dim rst As DAO.Recordset Dim targetFrm As Form ' 只打开需要的字段,提升效率(没必要全表加载) Set rst = CurrentDb.OpenRecordset("SELECT ID, Company, PartName FROM TblConsumables", dbOpenDynaset) ' 验证必填字段,用Exit Sub代替End(End会直接终止程序,太粗暴) If IsNull(Me.ConCompany) Or IsNull(Me.txtConName) Then MsgBox "Please complete all information before continuing.", vbExclamation Exit Sub End If With rst .AddNew !Company = Me.ConCompany.Value !PartName = Me.txtConName.Value .Update ' 先提交记录,让自动编号ID生成 .Bookmark = .LastModified ' 定位到刚插入的那条记录 TempVars!VarConAddID = !ID.Value ' 现在拿到的才是正确的新记录ID End With If IsOpen("frmConsumablesDetails") Then Set targetFrm = Forms!frmConsumablesDetails targetFrm.Requery ' 用Requery重新加载记录集,确保新记录被包含 ' 用FindFirst定位到指定ID的记录,这才是按ID跳转的正确方式 targetFrm.Recordset.FindFirst "ID = " & TempVars!VarConAddID ' 容错:如果没找到记录,提示用户 If targetFrm.Recordset.NoMatch Then MsgBox "刚添加的记录未在目标窗体中找到,请检查记录源或重试。", vbInformation End If Call Closefrm("ConFrmAddNewConsumable") End If ' 清理对象,避免内存泄漏 rst.Close Set rst = Nothing Set targetFrm = Nothing End Sub
关键修改点说明
- 延迟获取ID:必须在
.Update之后,通过.Bookmark = .LastModified定位到新记录,再读取ID,这样拿到的是数据库生成的有效自动编号。 - 替换跳转方法:放弃
DoCmd.GoToRecord,改用窗体记录集的FindFirst方法,直接通过ID匹配记录,这是Access中按ID定位记录的标准做法。 - 改用Requery:
Requery会重新执行窗体的记录源查询,确保新插入的记录被加载到目标窗体中,而Refresh做不到这一点。 - 更友好的退出方式:用
Exit Sub代替End,避免直接终止整个程序的执行。
额外注意事项
- 如果你的
ID是文本类型,FindFirst的条件要加单引号:targetFrm.Recordset.FindFirst "ID = '" & TempVars!VarConAddID & "'" - 确保
frmConsumablesDetails的记录源包含ID字段,否则FindFirst会报错“字段不存在”。 - 如果目标窗体不一定处于打开状态,可以直接用
DoCmd.OpenForm打开并定位:DoCmd.OpenForm "frmConsumablesDetails", , , "ID = " & TempVars!VarConAddID,这种方式更可靠。
内容的提问来源于stack exchange,提问作者Shadyjunior
相关产品推荐
相关产品推荐

