Filtro en un formulario para la selección de Nombres coincidentes con la búsqueda.

Tengo un formulario el cual muestra todos los Artículos que dispongo en la tabla.

Actualmente tengo de pulsar el botón de la derecha y seleccionar el filtro "contiene" para la búsqueda de todos los artículos que tienen en su descripción parte de la búsqueda que estoy realizando para mostrarlos.

Necesito que al entrar en el formulario me muestre un filtro que directamente realice la búsqueda.

A su vez ya dentro del formulario poder eliminar el filtro y poder buscar de nuevo otras descripciones sin tener que salier y volver a entrar de nuevo para tener que hacer la selección de la búsqueda.

1 respuesta

Respuesta
1

Prueba esto, a ver si te sirve:

1º/ En el encabezado o pie del formulario (queda más bonito) o en el detalle del mismo, añade un cuadro de texto que llames txtFiltro.

2º/ Al lado de ese cuadro, añade dos botones. Llámalos cmdFiltrar y cmdQuitarFiltro

3º/ En el evento "Al hacer click" de cmdFiltrar le generas este código (suponiendo que el campo por el que vas a filtrar se llama "Descripcion":

If Nz(Me.txtFiltro,"")="" Then

Msgbox "Tienes que escribir algún valor en el cuadro para poder filtrar.", vbInformation+vbOkOnly,"NADA A BUSCAR"

Me.txtFiltro.SetFocus

Exit Sub

End If

Me.Filter="Descripcion LIKE '*" & Me.txtFiltro & "*'"

Me.FilterOn=True

4º/ Al boton cmdQuitarFiltro, le generas este otro:

Me.FilterOn=False

¿Hola cómo estas?.

En el botón : cmdFiltrar

Este es el código que he puesto siguiendo tus instrucciones y me dice Error de Compilación, no se encontró el método o dato miembro que no encuentra el Cmpo txtFiltro

Esto es lo que tengo puesto:

Private Sub cmdFiltrar_Click()
If Nz(Me.txtFiltro, "") = "" Then
MsgBox "Escribir algún valor para poder filtrar.", vbInformation + vbOKOnly, "NADA A BUSCAR"
Me.txtFiltro.SetFocus
Exit Sub
End If
Me.Filter = "[DescripcionArticulo(Ventas)] LIKE '*" & Me.txtFiltro & "*'"
Me.FilterOn = True
End Sub

Los nombres he colocado igual que tu me has dicho.

Cuadro texto: txtFiltro

Botones: cmdFiltrar y el otro botón : cmdQuitarFiltro

Un saludo

Pues el código funciona correctamente (ver ejemplo), no sé por qué te da ese error...

Por cierto, ¿en qué linea te marca el error?

Revisa los nombres de los objetos, y asegúrate de que el cuadro de texto está en el formulario que quieres filtrar, no en un subformulario.

Otra cosa que puedes probar, es en el editor de vba, a compilar el código. Si hay algún problema con un nombre que no existe en el formulario, te lo dirá.

Hola de nuevo.

Al dar el botón de buscar me da el error en esta línea:

If Nz(Me.txtFiltro, "") = "" Then

Me marca como que no lo encuentra en Me.txtFiltro

Un saludo

Pues eso es que en tu formulario no tienes un control que se llame txtFiltro...

Sin ver tu formulario no te puedo decir más que lo ya dicho, revisa bien el nombre de tu cuadro de texto para buscar (propiedades->pestaña "Otras"->Nombre).

Hola.

He copiado de tu BD tanto los botones como el cuadro de texto y he cambiado el nombre del articulo por el mio y no me da error pero cuando llega a esta instrucción

Me.Filter = "[DescripcionArticulo(Ventas)] LIKE '*" & Me.txtFiltro & "*'"

Me saca un cuadro pidiéndome de nuevo el dato a filtrar, se lo doy y entonces no me recoge ningún articulo.

¿He puesto el nombre entre corchetes y por eso no me funciona bien como tu ejemplo que realiza las búsquedas perfectamente?, ¿Le falta algo más que tenga que añadirle a ese campo?.

Un saludo

Hola de nuevo.

Me funciona perfectamente, tenia un error en la descripción del nombre del articulo, lo he corregido y me funciona correctamente tal y conforme yo lo necesitaba.

Muchas gracias por tu ayuda.

Me alegra que encontraras el problema y lo hayas solucionado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas