在 MS Access 数据表子表单中导航和更新

Posted

技术标签:

【中文标题】在 MS Access 数据表子表单中导航和更新【英文标题】:navigating and updating in MS Access datasheet subform 【发布时间】:2014-05-06 14:04:34 【问题描述】:

我使用下面的代码循环遍历数据表视图中子表单的记录集并更新字段,这样我就可以避免执行 SQL 更新,因为我还想在需要时手动更新,这样可以避免“数据有已被其他用户更改...”消息。

我的问题是,如果我在记录集中有 10 条记录,但光标位于表单上的第 5 条记录,那么只有从该点开始的记录才会更改,例如 5 到 10。 这不应该更新所有记录吗?我不知道为什么不是。

谢谢

Dim tmprs As DAO.Recordset
Dim fld As DAO.Field
Dim bkmrk As Variant
Set tmprs = Forms!frmtanks!Child67.Form.Recordset
bkmrk = Me.Bookmark
tmprs.MoveFirst
While Not tmprs.EOF
    For Each fld In tmprs.Fields
        If fld.name = "freeDays" Then
            freeDays = fd
        End If
    Next
    tmprs.MoveNext
Wend
Me.Bookmark = bkmrk

【问题讨论】:

【参考方案1】:

您应该使用表单的RecordsetClone 进行更新。当您使用 MoveNext/MovePrevious 类型函数时,这不会改变表单的活动记录,从记录集的第一条记录开始,并且不需要您使用书签移回记录。

Dim tmprs As DAO.Recordset
Dim fld As DAO.Field
Dim bkmrk As Variant
Set tmprs = Forms!frmtanks!Child67.Form.RecordsetClone

On Error GoTo Cant_Update
While Not tmprs.EOF
    tmprs("freeDays") = fd
    tmprs.Update
    tmprs.MoveNext
Wend

【讨论】:

以上是关于在 MS Access 数据表子表单中导航和更新的主要内容,如果未能解决你的问题,请参考以下文章

MS Access = 引用子表单中的控件

MS Access 表单以更新多个表而无需子表单

Ms Access:来自另一个子表单的子表单重新查询未更新

MS Access:相关子表单的即时更新

MS Access 365 - 创建包含链接文件的子表单

MS Access 使用绑定表单更新未绑定表单