Filtrar formulario por un id exacto

Tengo un formulario ForModificacionesAsociados que se basa en la tabla TAsociados que contiene aproximadamente 2700 registros.

Además tengo un formulario ForBuscar, el cual es un multifiltro que abre ForModificacionesAsociados, entre otros botones para filtrar hay uno para filtrar entre fechas, otro para filtrar los socios que viven en la ciudad, otro para los de fuera, etc, además tengo un botón llamado "buscarTotal" el cual tiene el siguiente código:

Private Sub buscarTotal_Click()

FiltroTotal = "APELLIDOS LIKE '*" & Me.txtApellidos & "*'AND NOMBRE LIKE '*" & Me.txtNombre & "*'AND DOMICILIO LIKE '*" & Me.txtDomicilio & "*'AND NUMERO LIKE '*" & Me.txtNumero & "*' AND LOCALIDAD LIKE '*" & Me.txtLocalidad & "*'AND [Nº REGISTRO] LIKE '" & Me.txtNRegistro & "*'"

FiltroAcum = FiltroTotal

DoCmd.OpenForm "ForModificacionesAsociados"

Forms!ForModificacionesAsociados.Form.Filter = FiltroAcum

Forms!ForModificacionesAsociados.Form.FilterOn = True

End Sub

El campo Nº REGISTRO es autonumérico.

El problema que tengo es que cuando filtro por Nº REGISTRO, si indico el registro nº 1751 me filtra correctamente, pero si filtro por el nº 435 salen 3 registros filtrados, si filtro por el nº  22 salen más de 20 registro filtrados, y si filtro por el nº5 salen más de 200 registro.

¿Habrí­a alguna manera para que se pueda filtrar por Nº REGISTRO por el nº exacto que se indique?.

Por último, agradeceros nuevamente vuestro interés y vuestra ayuda.

1 Respuesta

Respuesta
1

Cambia esto:

 AND [Nº REGISTRO] LIKE '" & Me.txtNRegistro & "*'"

por esto otro:

AND [Nº REGISTRO] ='" & Me.txtNRegistro & "'"

Incluso si Nº Registro es un campo numérico (así definido en la tabla), mejor sería así:

AND [Nº REGISTRO]=" & Me.txtNRegistro 

Un saludo.


muchas gracias por tu pronta contestación 

con tu primera solución sale error

"error 3709 "

La clave de la búsqueda no e encontró

y me resalta la siguiente línea en amarillo

Forms!ForModificacionesHermanos.Form.FilterOn = True

Con tu segunda respuesta el código ha quedado así­

FiltroTotal = "APELLIDOS LIKE '*" & Me.txtApellidos & "*'AND NOMBRE LIKE '*" & Me.txtNombre & "*'AND DOMICILIO LIKE '*" & Me.txtDomicilio & "*'AND NUMERO LIKE '*" & Me.txtNumero & "*' AND LOCALIDAD LIKE '*" & Me.txtLocalidad & "*'AND [Nº REGISTRO]=" & Me.txtNRegistro 

Pero me da un error

"Error de compilación"

"No se encontró método o el dato miembro"

 Y se resalta en azul

.txtLocalidad

de nuevo gracias por tu interés

Si el código te funcionaba antes, con ese cambio que te propongo tendría que seguirte funcionando igual, pues lo único que cambia es el LIKE (para buscar por aproximación) por un = (para buscar por coincidencia exacta), y eliminar el último *.

Empezando por el segundo error, y dado que no te sugerí ningún cambio en txtLocalidad, ese error ya lo tenías que tener de antes... Lo que te indica el error es que no hay nada en tu formulario que se llame así (txtLocalidad)

El primer error te indica que ningún registro cumple con el criterio, probablemente porque el filtro está mal construido en alguna de sus partes.

Fíjate que antes de todos los AND tengas un espacio en blanco, porque parece que en algunos va pegado a la comilla simple.

Sveinbjon he comprobado la segunda solución en otro formulario que filtra solo por Nº REGISTRO y me funciona correctamente. 

Sveinbjon he vuelto con el código original y no hay ningún problema con txtLocalidad, me filtra correctamente 

Sveinbjon he tomado el código y borrado desde el último AND y he separado el AND de la ' lo he vuelto a escribir con más cuidado, ahora sí va correctamente, hay veces que es mejor escribirlo por uno mismo que copiar y pegar. Por mí este tema está solucionado, y te vuelvo dar las gracias por tu atención y pronta respuesta.

PD: perdona, alguna veces peco de impaciente, para la próxima pregunta intentare aguantar  un poco más y esperar para mirar mejor las soluciones antes de decir que no funciona correctamente.

un saludo 

Fíjate de dejar siempre los espacios en blanco correspondientes, es fácil no hacerlo y luego las cosas fallan. De cualquier manera, me alegra ver que lo has solucionado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas