Solución
- Creamos un formulario continuo basado en la tabla Clientes.
- En el panel de navegación, clic en la tabla Clientes.
- En la pestaña Crear, clic en Más formularios > Varios elementos.
- Insertamos un cuadro combinado independiente y le damos el nombre de Cuadro_combinado
- En la Hoja de propiedades del cuadro combinado, en la pestaña Datos modificamos estas tres propiedades
- En la Hoja de propiedades del cuadro combinado, en la pestaña Eventos, clic en Al cambiar y copiamos el siguiente código:
Private Sub Cuadro_combinado_Change2() ' Elimina el filtro del formulario, ' si el cuadro combinado está vacío If Nz(Me.Cuadro_combinado.Text) = "" Then Me.Form.Filter = "" Me.FilterOn = False ' Si se filtra un ítem del cuadro combinado, ' realiza una búsqueda exacta en el formulario ElseIf Me.Cuadro_combinado.ListIndex <> -1 Then Me.Form.Filter = "[NombreCompañía] = '" & _ Replace(Me.Cuadro_combinado.Text, "'", "''") & "'" Me.FilterOn = True ' Filtra en formulario con una coincidencia parcial Else Me.Form.Filter = "[NombreCompañía] Like '*" & _ Replace(Me.Cuadro_combinado.Text, "'", "''") & "*'" Me.FilterOn = True End If ' Mueve el cursor al final del cuadro combinado Me.Cuadro_combinado.SetFocus Me.Cuadro_combinado.SelStart = Len(Me.Cuadro_combinado.Text) End Sub
En Origen de fila, introducimos la siguiente consulta o la creamos con el generador de consultas (clic en los 3 puntos suspensivos).
SELECT Clientes.NombreCompañía FROM Clientes;
Empleamos la función Replace para reemplazar el apóstrofe simple ' por el doble ''. Pues si no, al buscar compañías con apóstrofe generaría un error.
Resultado
Ahora podemos o bien seleccionar un elemento de la lista del cuadro combinado, o teclear la cadena de texto que deseemos. Como se puede ver en la imagen, realiza una búsqueda parcial de las cadenas de texto: super, comi or chin.
Referencias
Entradas relacionadas
Buenas tardes, la idea esta muy buena y quiero ver de Implementarla en mi Access, pero no entiendo los nombres de las variables con respecto a mi access, cuales son las que tengo que cambiar y a que nombres serian de mi access.....
ResponderEliminarGracias
Buenas tardes!
ResponderEliminarMe parece muy bunea idea esto que propones en el access, la pregunta es: Que tengo que cambiar para adaptarlo a mi access? las variables a cambiar cuales serian?
Pude hacerlo funcionar, te hago otra consulta, si quiero tener 2 combos y que puedan complementarse para hacer esto mismo, como hago? sabrías decirme?
ResponderEliminarEn tu ejemplo seria.... Nombre de compañia y otro combo box seria por ejemplo cargo del contacto.
Tienes que vincular el origen de fila del segundo cuadro combinado con el primer cuadro combinado. Te recomiendo que plantees tu pregunta en un foro de Access detallando con mucha más precisión lo que deseas conseguir. Saludos
EliminarFunciona muy bien para los campos con formato texto. Pero qué tengo que modificar en el código para que me filtre campos con formato númerico?
ResponderEliminarGracias por el comentario. ¿Qué es lo que has intentado hacer para que funcione? Saludos.
EliminarHola. Muy bueno!! Te hago una consulta . Tengo una base de datos de venta de electrodomesticos y demas y lo que quiero es buscar el producto ingresando los ultimos 5 o 4 digitos del codigo. Lo que has hecho me viene de 10, solo me faltaria que ingresando los ultimos numeros del codigo me filtre el producto. GRACIASSS
ResponderEliminarHola Agostina. Lo que describes es una búsqueda de una coincidencia parcial y ya está cubierto en esta entrada. Lee con atención el artículo y adáptalo a tus propósitos. Saludos.
EliminarLo invito a ver este video https://youtu.be/2ur17LuDdV0
Eliminar
ResponderEliminarMuy Buena opción me ha funcionado a la primera y ademas es rapidísimo en las búsquedas estoy buscando entre 60000 registros partes del campo separado por "*" y va de escandalo.
Muchas Gracias.
Muchas gracias y un saludo.
EliminarMuchas gracias por el código. Funciona genial. Se podría hacer para que buscase por varios campos a la vez en lugar de por uno solo??.
ResponderEliminarMuy agradecido por el aporte, lo estoy usando con frecuencia y me es de mucha utilidad. Ahora se me plantea el tener que hacerlo en un formulario, con un cuadro de lista que selecciona al cliente y desearía que el cuadro de lista se fuese filtrando, mostrando los clientes que van coincidiendo con lo escrito según se va escribiendo. ¿Me puedes orientar, no se como enfocarlo? Muchas gracias.
ResponderEliminarMi recomendación es que plantees tu duda en un foro en el que otros usuarios puedan ayudarte. Gracias por el comentario.
Eliminarfunciona bien y rápido, pero da error si la cadena tecleada no coincide con los datos de la tabla: ejemplo, yo teclee por error una letra mal en el combo y se va directo al código y se tiene que finalizar el proceso, me gustaría saber como evitar esto, pienso que si un evento al no estar en la lista funcionaria?
ResponderEliminarGracias por el comentario. Ya nos comentarás qué lo causaba y cómo lo resolviste. Saludos.
EliminarBuenas tardes talvez podrianos proveernos el ejemplo para entenderlo mejor
ResponderEliminarMuchas Gracias...me ha resultado muy sencillo... Que guayyyy!!
ResponderEliminarMuchas gracias y un saludo
EliminarHola en mi caso solo use un comboBox (ese solo campo en pantalla) confugurado segun indicas, pero no hace la busqueda parcial, busca de izquierda a derecha...que puede ser?
ResponderEliminarno parti de un formulario de varios elementos, cree un formaulario con un campo combobox solamente
Desde ya mil gracias
Revisa la sintaxis. Una posible causa es que hayas olvidado algunos de los dos asteriscos flanqueando el texto de tu cuadro combinado. En mi ejemplo esta sección:
EliminarElse
Me.Form.Filter = "[NombreCompañía] Like '*" & _
Replace(Me.Cuadro_combinado.Text, "'", "''") & "*'"
Me.FilterOn = True
End If
Saludos
Estupendo! Mil gracias! Lo he implemetado para filtrar/buscar en varios campos a la vez y es una maravilla!!
ResponderEliminarMuchas gracias y un saludo
EliminarBuenas noches quiero buscar dentro de mi cuadro combinado colocando una letra o mas y que se abra la lista del cuadro combinado y asi la misma me muestre los registros que tengan la letra introducidad desde ya muchas gracias
ResponderEliminarBuenos días. ¿Y qué es lo que has intentado? Así otros usuarios quizá puedan ayudarte.
EliminarSaludos. Tengo un ejemplo parecido pero no puedo escribir una segunda palabra dejando espacio
ResponderEliminarPERFECTOOOOOOOOO MUHCAS GRACIASSSSS!!!!!!!!
ResponderEliminarLos invito a ver algo más completo en este video https://youtu.be/2ur17LuDdV0 encontrará el link para descargar la base de datos y el manual en PDF
ResponderEliminarExcelente Filtro, muchas gracias por compartir. Pero tengo un problema, cuando escribo una palabra que no esta en el campo de búsqueda me tira error. Que puede ser...?
ResponderEliminarGracias por el aporte. ¿Y sabe cómo implementarlo con más de un combo y que el filtro tenga en cuenta lo que se escribe o no en todos ellos?
ResponderEliminar