Ms access MS Access如何更新当前行,移动到下一条记录,而不是第一条记录
我有一个连续表单,在页脚中有一个命令按钮,该按钮使用一个值更新当前记录,该值将使记录在重新查询后不再显示在表单中。我希望用户能够单击按钮,一旦记录被更新,移动到下一个记录,而不是第一个记录,这是默认行为。我有一些我认为应该可以使用的代码,但没有,它会一直返回到表单上的第一条记录Ms access MS Access如何更新当前行,移动到下一条记录,而不是第一条记录,ms-access,vba,Ms Access,Vba,我有一个连续表单,在页脚中有一个命令按钮,该按钮使用一个值更新当前记录,该值将使记录在重新查询后不再显示在表单中。我希望用户能够单击按钮,一旦记录被更新,移动到下一个记录,而不是第一个记录,这是默认行为。我有一些我认为应该可以使用的代码,但没有,它会一直返回到表单上的第一条记录 Private Sub cmdCloseReq_Click() Dim ReqID As String ReqID = Me.txtReqID Dim rst As Recordset Dim strBookmark
Private Sub cmdCloseReq_Click()
Dim ReqID As String
ReqID = Me.txtReqID
Dim rst As Recordset
Dim strBookmark As Integer
Set rst = Me.RecordsetClone
rst.MoveNext
If Not rst.EOF Then ' if not end-of-file
strBookmark = rst.Bookmark ' ...save the next record's bookmark
Dim cmd As New ADODB.Command
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandType = adCmdStoredProc
.CommandText = "spUpdateLOG_ReqCompleteDate"
.Parameters("@ReqID") = ReqID
.Execute
End With
Me.Requery
Me.Bookmark = strBookmark
End If
Set rst = Nothing
End Sub
好的,我根据rene的帖子找到了一个解决方案。我抓取下一条记录的主键,进行更新,然后在重新请求后找到下一条记录并将书签设置为该项。代码如下:
Private Sub cmdCloseReq_Click()
Dim ReqID As String
ReqID = Me.txtReqID
Dim rst As New ADODB.Recordset
Dim strBookmark As String
Set rst = Me.RecordsetClone
With rst
.Find "[ReqID] = '" & ReqID & "'"
.MoveNext
strBookmark = rst.Fields(0)
End With
If Not rst.EOF Then ' if not end-of-file
' ...save the next record's bookmark
Dim cmd As New ADODB.Command
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandType = adCmdStoredProc
.CommandText = "spUpdateLOG_ReqCompleteDate"
.Parameters("@ReqID") = ReqID
.Execute
End With ' ...delete the record
Me.Requery
Set rst = Me.RecordsetClone
With rst
.Find "[reqID]= " & strBookmark
Me.Bookmark = .Bookmark
End With
Else
With cmd
.ActiveConnection = CurrentProject.Connection
.CommandType = adCmdStoredProc
.CommandText = "spUpdateLOG_ReqCompleteDate"
.Parameters("@ReqID") = ReqID
.Execute
End With ' ...delete the record
Me.Requery
End If
Set rst = Nothing
我记得重新查询后,书签会失效。如果您有主键,您可以更好地抓取该主键,并在重新查询后将当前记录移动到以前获得的主键