Filtrar datos con búsqueda en cualquier parte del campo

Tengo un formulario donde quiero filtrar los registros introduciendo en un cuadro de texto los caracteres a filtrar independientemente de la posición que ocupe y he realizado el siguiente evento después de actualizar(copiado de vosotros)

Me.RecordSource = "select * from Facturas where proveedor like ""*""&'" & Me.BUSCAR & "'& ""*"""
Me.BUSCAR = Null

Y funciona perfectamente, mi problema es que no se como restablecer los datos del formulario una vez realizado la consulta, he probado poner

Me.FilterOn = False

pero no me funciona.

2 Respuestas

Respuesta
2

La instrucción no es un filtro como tal, es un criterio. Puedes, por ejemplo, poner un botón, aunque se puede poner en otro evento

Al pulsar Enter

Ahora pulso el botón

El código del botón es

Private Sub Comando10_Click()
Buscar = Null
Me.RecordSource = "select * from Clientes"
End Sub

En tu caso, en vez de Clientes sería Facturas

Hola Sveinbjorn El Rojo, cuando hago el evento

Me.RecordSource = "select * from Facturas where proveedor like ""*""&'" & Me.BUSCAR & "'& ""*"""

Facturas es la tabla, el formulario donde hago el evento se llama Facturas-Entrada, perdona mi poco conocimiento de access, voy navegando por internet intentando solucionar mis dudas por eso te agradezco tu ayuda

No sé si quieres que te responda él o es que te confundes de persona

Perdona Icue, es que me disteis dos personas respuesta a mi pregunta, tú y Sveinbjorn y por error confundí el destinatario, lo siento.

Te decía que en tu caso sería, en el evento Al hacer clic del botón

buscar=null

me.recordsource="select * from facturas"

Gracias Icue, el problema es que una vez que elimino el filtro no me guarda el orden de los registros y eso me produce un problema y también es posible que me ignore en la búsqueda los acentos, gracias.

solucionado lo de la ordenación

Me.RecordSource = "select * from Facturas order by id"

pero los acentos no tengo ni idea 

En código ASCII, la a como tal es el 97, pero á es el 160, por eso diferencia las letras con acento de las que no lo tienen. Yo, personalmente, no le pongo acento a nada, ni campos, ni controles ni objetos, nada. Luego en las etiquetas, que para eso están, si se lo pongo.

Tendrías que usar la función Replace. No me extiendo porque en esta página de Todoexpertos tienes muchos ejemplos de esa función.

Respuesta
1

El FilterOn=False no te funciona porque no estás aplicando un filtro al formulario, sino aplicando el filtro en el origen de datos del formulario, que no es lo mismo.

Si haces:

Me.Filter= "select * from Facturas where proveedor like ""*""&'" & Me.BUSCAR & "'& ""*"""
Me.FilterOn=True
Me.BUSCAR = Null

Sí te funcionará el Me.FilterOn=False

Si cambias el recordsource, para anular ese "filtro", has de aplicarle como origen la tabla sin filtrar:

Me.RecordSource = "select * from Facturas"

Un saludo.


¡Gracias! te agradezco mucho tu respuesta.

No entiendo qué me quieres preguntar con tu comentario en la respuesta de Icue... ¿en qué evento poner esa línea?...

Perdona Sveinbjorn , es que me disteis dos personas respuesta a mi pregunta, tú y Icue y por error confundí el destinatario, lo siento.

Es posible que la búsqueda se pueda hacer ignorando los acentos, gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas