Bueno, lo primero que tienes que tener en cuenta es que la propiedad EOF es verdadero cuando el registro activo
es el siguiente al último del recordset y la instrucción MoveLast lo manda al último, por lo tanto EOF es False. Igual para BOF (anterior al primero).
Debes jugar con la propiedad AbsolutePosition del recordset que dá de valor 1 en el primer registro y RecordCount en el último, activando o desactivando los botones de posición.
Para que funcione tu código, podrías poner algo así:
Código:
Private Sub Command1_Click(Index As Integer)
Select Case Index
Case 0 ' ir al primer registro
rs.MoveFirst
Case 1 ' ir al siguiente
rs.MoveNext
Case 2 ' ir al anterior
rs.MovePrevious
Case 3 ' ir al último
rs.MoveLast
End Select
Command1(1).Enabled = IIf(rs.AbsolutePosition = rs.RecordCount, False, True)
Command1(3).Enabled = IIf(rs.AbsolutePosition = rs.RecordCount, False, True)
Command1(0).Enabled = IIf(rs.AbsolutePosition = 1, False, True)
Command1(2).Enabled = IIf(rs.AbsolutePosition = 1, False, True)
End Sub
Por supuesto que tanto en el Command1(0) como el (2), la propiedad Enabled al cargar debe de estar a False (lo puedes hacer en el Load o en diseño)
Espero que así te funcione.