Filtrar texto 'que contenga' en subformulario access

Tengo un formulario el cual contiene un subformulario PRODUCTOS en forma de hoja de datos, en el cual necesito filtrar el texto escrito desde un cuadro independiente del formulario Texto_Buscar y ejecutarlo desde un boton, el campo a filtrar del subformulario esta nombrado como DescripcionProducto,

Ya que muchos de los productos contienen palabras similares, necesito que el filtro sea 'que contenga el texto', es decir si busco 'pintura' o una cadena de palabras 'pintura azul' me busque todos los productos que contengan esta palabra o una cadena de palabras.

2 respuestas

Respuesta
2

En el código del botón pon:

Dim miFiltro as String
miFiltro="DescripcionProducto LIKE '*" & Me.Texto_Buscar & "*'"
Me.PRODUCTOS.Form.Filter=miFiltro
Me.PRODUCTOS.Form.FilterOn=True

Si quieres quitar el filtro, te falta otro botón con el código:

Me.PRODUCTOS.Form.FilterOn=False

Un saludo


Gracias por la respuesta Sveinbjorn El Rojo, funcionó el código que enviaste, pero no se por que razón no me filtra todos los resultados que contienen la palabra. Tengo una base de datos de 17,000 registros y por darte ejemplo al buscar PIÑATA, me encuentra solamente 6 registros y he utilizado excel para revisar y hay mas de 200 registros que contienen esta palabra. He revisado de arriba para abajo la tabla y no encuentro la razón que no encuentra estos contenidos. 

Cambia el filtro por este otro, si así no te da todos los registros, ya no sé qué más hacerle:

Dim miFiltro as String
miFiltro="DescripcionProducto LIKE '" &  Me.Texto_Buscar & "*' OR DescripcionProducto LIKE '*" & Me.Texto_Buscar & "*' OR DescripcionProducto LIKE '*" & Me.Texto_Buscar & "'"
Me.PRODUCTOS.Form.Filter=miFiltro
Me.PRODUCTOS.Form.FilterOn=True

Ya me dirás.

Respuesta
2

Puedes poner, en el evento al hacer clic

productos.Form.RecordSource = "select * from productos where descripcionproducto Like '*" & Me.[texto_Buscar] & "*'"

Gracias por la respuesta Icue Gonzalez, funcionó la fórmula que enviaste, pero no se por que razón no me filtra todos los resultados que contienen la palabra. Tengo una base de datos de 17,000 registros y por darte ejemplo al buscar PIÑATA, me encuentra solamente 6 registros y he utilizado excel para revisar y hay más de 200 registros que contienen esta palabra. He revisado de arriba para abajo la tabla y no encuentro la razón que no encuentra estos contenidos.

No se me ocurre porque pasa eso. Ahora mismo acabo de comprobarlo con una tabla que tiene 33.000 y cuando le pongo el texto a buscar me saca 5200 de una cadena.

Si quieres, repito, si quieres mándame un mensaje a [email protected] y te mando un ejemplo. O si quieres mándame una tabla sólo con el campo Producto y esos 17000 registros y lo miro. Si lo haces, en el asunto del mensaje pon tu alias Allan, ya que si no sé quien me escribe ni los abro.

¡Gracias! Julián González Cabarcos, estuve buscando el error y el formulario principal era el que me ocasionaba el conflicto, gracias por tu ayuda.

Hola  Julián González Cabarcos, he estado implementando el filtro que me ha funcionado a la perfección, pero ahora el filtro queda heredado y cada vez que cargo me queda la última búsqueda guardada. He estado buscando pero no encuentro la solución.

Quisiera pedir tu ayuda de como quitar este tipo de filtro a través de un botón.

Mil Gracias

Partiendo de la premisa de que no uso filtros nunca, ya que la "selección" la hago con criterios where puedes verlo en

https://support.microsoft.com/es-es/kb/197220 

Private Sub Form_Current() 

  If Me.FilterOn = False Then 

     Me.Filter = "" 

  End If

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas