Botón siguiente al llegar al último registro, al hacer click, comience por el primer registro

Tengo un formulario con botones "anterior" y "siguiente, y deseo que cuando lleguen al primer registro o último registro, al hacer click, continúen con el último/primer registro, respectivamente.

1

1 respuesta

Respuesta
2

Puedes hacerlo de varias formas. Una de ellas sería con estos códigos:

Private Sub cmdAnterior_Click()
If Me.CurrentRecord > 1 Then
DoCmd.GoToRecord Record:=acPrevious
ElseIf Me.CurrentRecord = 1 Then ' para cerrar el bucle
DoCmd.GoToRecord Record:=acLast
End If
End Sub ' cmdAnterior_Click
Private Sub cmdSiguiente_Click()
If Me.CurrentRecord < Me.RecordsetClone.RecordCount Then
DoCmd.GoToRecord Record:=acNext
ElseIf Me.CurrentRecord = Me.RecordsetClone.RecordCount Then ' para cerrar el bucle
DoCmd.GoToRecord Record:=acFirst
End If
End Sub ' cmdSiguiente_Click

Un saludo.


http://nksvaccessolutions.com/academy/ 

Hola, Sveinbjorn El Rojo:

Antes que nada, muchas gracias por tu pronta respuesta. A posteriori, no tengo conocimientos en programación, ¿Cómo introduzco el código para probarlo? Muchas gracias nuevamente.

Pues es muy sencillo:

1º/ Creas un botón, sacas sus propiedades y en la pestaña "Eventos", localizas la fila "Al hacer click".

2º/ Verás que al situarte en la fila aparece un botón a la derecha con 3 puntos. Al pulsarlo te debería aparecer una ventana emergente con varias opciones: eliges "generador de código" o algo parecido.

3º/ Se te abrirá el editor de Visual Basic, y entre las líneas que te aparecen (Private Sub ... y End Sub), escribes el código del botón que sea (el primero es el del botón anterior).

¡Gracias! 

Me faltaba cambiar de macro a procedimiento en la línea Al hacer click. Ha funcionado perfectamente. Muchas gracias!

Hola, Hola, Sveinbjorn El Rojo:

He encontrado un código tuyo que has publicado hace años para "campos obligatorios". También, en aquella explicación, añades un código para botones "nuevo", "anterior" y "siguiente": 

Salida:

Exit Sub

sol_err:

If fncControlaVacios(Me.Name) = False Then

'no hacemos nada

Else

MsgBox Err.Description

End If

Resume Salida

He intentado ajuntar los dos códigos pero me da problemas, y mi conocimiento de VB tiene sus límites. ¿Cómo podría solucionarlo? Es decir, que los botones hagan control de campos obligatorios y, a su vez, continúen con el último/primer registro, respectivamente.

Muchas gracias.

¿Y cuál es el problema que te da? Sin saberlo, malamente te podré ayudar... XD

Error en la tercera línea (DoCmd.GoToRecord Record:=acPrevious): "Se ha producido el error '2015' en tiempo de ejecució: No se puede ir al registro especificado.

Private Sub Comando76_Click()
If Me.CurrentRecord > 1 Then
DoCmd.GoToRecord Record:=acPrevious
ElseIf Me.CurrentRecord = 1 Then ' para cerrar el bucle
DoCmd.GoToRecord Record:=acLast
End If
Salida:

Exit Sub

sol_err:

If fncControlaVacios(Me.Name) = False Then

'no hacemos nada

Else

MsgBox Err.Description

End If

Resume Salida
End Sub

Te falta poner "On Error Goto sol_err" (sin las comillas) después del Private Sub...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas