我使用下面的代码在数据表视图中循环遍历子窗体的记录集并更新字段,这样我就可以避免执行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
答案 0 :(得分:0)
您应该使用表单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