Flechas de navegación de registros en Access

El tema es el siguiente, estoy haciendo una base de datos en Access y tengo las típicas flechas de navegación de registros ( Ir primero, ir anterior, ir siguiente, ir ultimo) la cuestión es que quiero controlar cuando llego ( pinchando los botones de las flechas)al primer y último registro ( esto lo quiero hacer mediante código en Visual Basic)dado que quiero desactivar los botones correspondientes para que se sepa que llegué al último o primer registro, no se si me explico... Si supieras contestarme se lo agradecería muchísimo...
2

2 respuestas

Respuesta
1
No puedes esconder esos botones cuando muestras una tabla o consulta. Pero puedes mostrar los datos en un formulario en forma tabulada.
Si llamas a los datos mediante un recordset puedes usar, las opciones.
Recordset.movefirst, recordset.movelast, o recordset.movenext
Gracias! Por fin alguien que me sabe contestar! Bien eso es lo que intenté, cargando el recordset, el código es el siguiente:
if recordset.eof() then
   recordset.movelast
end if
Bueno, más o menos, la cuestión es que si que se me mueve al siguiente pero no al siguiente ( ejemplo, si me encuentro en el 1º registro, se mueve al 2º pero al 3º ya no) es raro y no se cómo hacer... ¿sabrías tu?
Gracias de antemano
A ver con un recorset (conjunto de registro), puedes recorrer los registros uno a uno . Por ejemplo.
Dim rs as Recordset
Codigo de coneccion
     while not rs.eof
      rs.movenext
     loop
Podemos ir directamente al primer registro rs.movefirst
o al ultimo rs.movelast
o a un registro especifico rs.move 3
Bien, yo he hecho lo siguiente, ¿qué te parece? Porque me da un error en la linea donde muestro los datos en el formulario y creo que está bien, ¿no? Es la misma linea que uso para el botón primero y funciona bien... me estoy volviendo loca con eso!
SQL = "select equipo from Equipo;"
Set r = CurrentDb.OpenRecordset(SQL)
While Not r.EOF
   r.MoveNext
   Form_Formulario.equipo = r.Fields("equipo")--esto es para que me muestre el registro siguiente en el formulario  
Wend---con loop me da un error así que he tenido que usar el wend
Por cierto, muchas gracias por tomarte tantas molestias.
Un saludo
hasta el while veo bien la operación. Sin embargo, primero debes mostrar el registro y después pasar el siguiente.
Ej.
r.MoveFisrt ' Primero mueves el puntero al primer registro
Do While Not r.eof
From_Formulario.equipo=r.fiels("equipo")    ' Muestras el Primero
r.movenext                                          ' Pasas al siguiente. y Asi sucesivamente
loop
Para que te funcione el loop tines que pones Do While.
Vale, he probado lo que me has dicho, y por lo menos no me da ningún error... el problema es, que no se por qué extraño motivo se me mueve al último en vez de al siguiente, ¿puede ser porque uso una tabla con índice de texto en vez de ser autonumérico o numérico? Aunque de hecho el campo que muestro es la propia clave.. bufff!
No debería darte ese tipo de problemas. Si quieres, mandame la aplicación para ver que pasa. [email protected]
Ya te he mandado la aplicación, no se si te llegó bien...
Drolma te envié la aplicación, con algunas modificaciones.
Respuesta
1
Si creas un botón con el asistente, elige la opción de 'operaciones con registros', allí puedes crearte los botones correspondientes y ver/modificar el código.
Ya... eso ya lo he hecho, pero no entiendo esta línea:
DoCmd.GoToRecord , , acFirst
Se supone que va directamente al primero registro, pero lo que quiero saber es cuando llego a ese primer registro. Yo he probado con lo siguiente:
Dim r As dao.Recordset
Private Sub primero_Click()
  SQL = "select equipo from Equipo;"
  Set r = CurrentDb.OpenRecordset(SQL)
  If r.RecordCount > 0 Then
     r.MoveFirst
     Form_Formulario1.equipo = r.Fields("equipo")
    MsgBox ("estoy en el primero")
  End If
End Sub
De esta manera me funciona bien el botón de primero, pero con el bontón de siguiente que sería así:
Private Sub siguiente_Click()
  Dim i As Integer
  SQL = "select equipo from Equipo;"
  Set r = CurrentDb.OpenRecordset(SQL)
  If r.RecordCount > 0 Then
    If r.EOF() Then
       r.MoveLast
       MsgBox ("ultimo")
       Form_Formulario1.equipo = r.Fields("equipo")
    Else
       r.MoveNext
       MsgBox ("siguiente")
       Form_Formulario1.equipo = r.Fields("equipo")
End If
End If
End Sub
me funciona bien con el segundo registro, pero no me pasa el 3º registro ni al 4º,5º, etc...me explico bien?
No sé lo que pretendes en realidad, con las flechas normales sabes perfectamente cuando estás en el 1º (pone 1) y cuando has llegado al final. Para navegar usa los comandos standard del access
"ya... eso ya lo he hecho, pero no entiendo esta línea:
DoCmd. GoToRecord,, acFirst"
¿Qué pichorras hay que entender?, es una instrucción que te manda al primer registro, no hay que entender nada. En cuanto a saber si estas en el primero o el ultimo despues de ejecutar la instrucción 'x' pregunta por me. Recordset.EOF o me. Recordset. BOF, aunque en access no se si funcionará.
De todas formas pienso que te complicas la vida.
Puedes llenar la aplicación de código, pero esto suele costar caro porque en los cambios de versión siempre hay cosas que dejan de funcionar, mi consejo es que no programes nada que el access te de 'gratis', es mejor explicarlo al usuario.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas