我一直在尝试创建一个按钮,导航回到最后一条记录的第一条记录。我得到“无法转到指定记录”错误。以下是我为此按钮尝试的两种代码样式:
Private Sub Command161_Click()
On Error Resume Next
If Me.CurrentRecord = acLast Then
DoCmd.GoToRecord , , acFirst
Else
DoCmd.GoToRecord , , acNext
End If
End Sub
Private Sub Command161_Click()
With Me.Recordset
If .AbsolutePosition = .RecordCount - 1 Then
DoCmd.GoToRecord , , acFirst
Else
DoCmd.GoToRecord , , acNext
End If
End With
End Sub
目标是循环回到第一条记录,而不允许用户创建新记录。我尝试过这个代码,将“allow additions”设置为yes和now,结果相同。任何帮助,将不胜感激。
我建议在表单模块中定义一个私有谓词函数,它返回一个布尔值,具体取决于活动表单是否在其记录源中显示最后一条记录。
这样的功能可能写成:
Private Function LastRecordP() As Boolean
With Me.RecordsetClone
If Not .EOF Then
.MoveLast
.MoveFirst
LastRecordP = Me.CurrentRecord = .RecordCount
End If
End With
End Function
然后,您的按钮控件的OnClick
事件处理程序可以更简洁地编写为:
Private Sub Command161_Click()
If LastRecordP Then
DoCmd.GoToRecord , , acFirst
Else
DoCmd.GoToRecord , , acNext
End If
End Sub
或者,您可以允许函数接受Form对象作为参数,并使用Me
关键字评估此类函数,例如:
Private Function LastRecordP(Frm As Form) As Boolean
With Frm.RecordsetClone
If Not .EOF Then
.MoveLast
.MoveFirst
LastRecordP = Frm.CurrentRecord = .RecordCount
End If
End With
End Function
Private Sub Command20_Click()
If LastRecordP(Me) Then
DoCmd.GoToRecord , , acFirst
Else
DoCmd.GoToRecord , , acNext
End If
End Sub