Buscador apellidos y nombre para filtrar en access

Tengo una base que contiene cerca de 500 registros de personas. En el formulario tengo un buscador por apellidos y nombre y me filtra perfectamente.

Mi problema es que una vez me muestra la persona (1 de 1)si quiero navegar por resto de registro (hacia atrás o hacia delante) no puedo ya que aparece 1 de 1 y si le pincho los botone de navegación me crea un registro nuevo que luego tengo que borra.

Mi pregunta es la siguiente. En lugar de filtrar el registro que responde a la condición (apellidos y nombre) y solo aparezca ese, puedo pedirle que me sitúe en el registro, es decir en lugar que aparezca 1 de 1 que aparezca 23 de 500 por ejemplo, es decir la posición donde se encuentra el registro.

Si esto no pudiese se... ¿tendría qué hacer un botón de limpiar?

No sé si me he explicado muy bien.

Respuesta
1

Ignoro si tu Formulario es Continuo (Tabular) o En Columnas.

Si fuera lo segundo >> 1 Registro por vez tienes las opciones de usar:

Método FindFirst que está muy bien explicado en éste enlace

https://docs.microsoft.com/es-es/office/client-developer/access/desktop-database-reference/recordset-findfirst-method-dao 

También tienes la opción de usar la Propiedad Bookmark del Formulario >>

https://docs.microsoft.com/es-es/office/vba/api/access.form.bookmark 

Y habría varias más sabiendo el tipo de Formulario que estés usando.

Para un Formulario Continuo, lo que te apunta Eduardo (un saludo), es perfectamente válido. JTJ

1 respuesta más de otro experto

Respuesta
1

Si selecciona los nombre y apellidos de un cuadro combinado, se puede hacer fácilmente:

Observe que seleccioné "COROZO" y me lleva al registro 23. Este es el código del evento Después de actualizar, con RecordSetClone.

BUSCAR POR AL ID

Debe cambiar idva por el campo clave de su tabla y cboBuscar por el nombre de su cuadro combinado.

Código del evento despues de actualizar

Muchísimas gracias.

Estoy escribiendo el código y me sale error de tipos

Private Sub Buscar_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[dni]= " & Str(Nz(Me.BUSCAR, 0))
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

por si sirve de ayuda este es el código que estaba usando:

Private Sub Buscar_AfterUpdate()
Me.RecordSource = "select * from [DATOS PERSONALES] where dni='" & Me.BUSCAR & "'"
End Sub

La tabla se llama datos personales y el campo de clave de la tabla es dni. En el origen de la fila de la hoja de propiedades tengo escrito los siguiente

SELECT [DATOS PERSONALES PANTILLA].DNI, [apellido1] & " " & [apellido2] & ", " & [nombre1] AS Nombrec FROM [DATOS PERSONALES PANTILLA] ORDER BY [apellido1] & " " & [apellido2] & ", " & [nombre1];

Si el cuadro combinado tiene los campos en este orden: DNI, Nombrec entonces debe quedar así:

Private Sub Buscar_AfterUpdate()
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[dni]= '" & Str(Nz(Me.BUSCAR, 0)) & "'"
If Not rs.EOF Then Me.Bookmark = rs.Bookmark
End Sub

Como el dni es texto por esto le sale error de tipos.

Hola Eduardo:
Muchas gracias por tu ayuda y el tiempo que te estoy haciendo perder.

He introducido el código que tu me has enviado y me sigue dando error de tipo

El DNI es texto porque al final lleva letra

Un abrazo

¿Puede mostrar una imagen de la cuadricula del combo Buscar?

Hola.

No sé si te refieres a esto

El cuadro buscar lo tengo en el encabazado del formulario por si te sirve

No detecto inconsistencia, lo único es que envíe la base de datos a [email protected] favor hacer referencia en el asunto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas