As to your first question, I think each Sub is self-explanatory:
Code:
Private Sub Go2New_Click()
DoCmd.GoToRecord , , acNewRec
End Sub
Code:
Private Sub Go2First_Click()
DoCmd.GoToRecord , , acFirst
End Sub
Code:
Private Sub Go2Last_Click()
DoCmd.GoToRecord , , acLast
End Sub
Code:
Private Sub Go2Prev_Click()
If Me.CurrentRecord = 1 Or Me.CurrentRecord = acNew Then
DoCmd.GoToRecord , , acLast
Else
DoCmd.GoToRecord , , acPrevious
End If
End Sub
Code:
Private Sub Go2Next_Click()
If Me.CurrentRecord = Me.RecordsetClone.RecordCount Or Me.NewRecord = True Then
DoCmd.GoToRecord , , acFirst
Else
DoCmd.GoToRecord , , acNext
End If
End Sub
If you get to the end of the Recordset, hitting Next or Previous 'wraps' it to the First Record or the Last Record, respectively. If you don't want this behavior you can use these Subs to
do nothing if on the First Record or Last Record, or pop a Messagebox telling the user the situation and then do nothing.
Sorry, but I have absolutely no idea of what you're asking in your second question!
Linq ;0)>
The problem with making anything foolproof...is that fools are so darn ingenious!
All posts/responses based on Access 2003/2007