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

MS Access连续表单Bookmark属性失效,报错3159:无效书签

连续表单添加记录后书签跳转失效(错误3159)

问题描述

我有一个设置了.AllowAdditions=False的连续表单,通过按钮执行以下VBA代码添加新记录:

Dim bkm As Variant
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("tbl_Unit", , dbAppendOnly)

With rs
    .AddNew
    .Fields("UnitID") = DMax("UnitID", "tbl_Unit") + 1
    .Fields("ObjektID") = 0
    .Fields("UnitTypID") = 0
    .Update
    bkm = .Bookmark
End With

Me.Requery
Me.Recordset.Bookmark = bkm
End Sub

记录已成功添加,但使用Bookmark方法跳转到新记录时无法生效,触发运行时错误3159: Not a valid bookmark,错误出在Me.Recordset.Bookmark = bkm行。为何会出现该错误?

原因

书签是单个Recordset对象独有的标识,你这里的核心问题:

  • 你从直接打开表的独立Recordset(rs)中获取了书签bkm
  • 表单的Me.Recordset是另一个完全独立的Recordset实例,哪怕数据源都是tbl_Unit,两个Recordset的书签也完全不通用

另外,你用dbAppendOnly模式打开的记录集仅支持添加新记录,无法浏览现有数据,这种模式下的书签本身就不具备跨实例复用的价值。

解决办法

办法1:重新定位表单记录集的新记录

先保存新生成的UnitID,表单重新查询后,用这个ID定位新记录并设置书签:

Dim newUnitID As Long
Dim rs As DAO.Recordset
Dim cloneRs As DAO.Recordset

' 先计算新ID,避免重复调用DMax
newUnitID = DMax("UnitID", "tbl_Unit") + 1

' 添加新记录
Set rs = CurrentDb.OpenRecordset("tbl_Unit", , dbAppendOnly)
With rs
    .AddNew
    .Fields("UnitID") = newUnitID
    .Fields("ObjektID") = 0
    .Fields("UnitTypID") = 0
    .Update
    .Close
End With

Me.Requery

' 用RecordsetClone定位新记录,设置表单书签
Set cloneRs = Me.RecordsetClone
cloneRs.FindFirst "UnitID = " & newUnitID
If Not cloneRs.NoMatch Then
    Me.Bookmark = cloneRs.Bookmark
End If
cloneRs.Close

' 清理对象
Set rs = Nothing
Set cloneRs = Nothing

办法2:直接用表单的RecordsetClone操作

跳过单独打开表的步骤,直接操作表单的记录集克隆(不影响原表单显示状态):

Dim newUnitID As Long
Dim cloneRs As DAO.Recordset

newUnitID = DMax("UnitID", "tbl_Unit") + 1

' 用表单克隆记录集添加新记录
Set cloneRs = Me.RecordsetClone
cloneRs.AddNew
cloneRs.Fields("UnitID") = newUnitID
cloneRs.Fields("ObjektID") = 0
cloneRs.Fields("UnitTypID") = 0
cloneRs.Update

Me.Requery

' 定位新记录并设置书签
cloneRs.FindFirst "UnitID = " & newUnitID
If Not cloneRs.NoMatch Then
    Me.Bookmark = cloneRs.Bookmark
End If
cloneRs.Close
Set cloneRs = Nothing

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 06:01:27