Filtrar Cuadro Combinado al digitar, no importando en qué parte se encuentra lo digitado, inicio, medio o al final del nombre

Señores buenas tardes. Dios todo poderoso nos libre de esta maldita pandemia. Mi pregunta es la siguiente: tengo una tabla llamada Terceros, con los siguientes campos Idte(Autonumérico), Cedula(Texto), Nomtercero(Texto), Direccion(Texto). Etc

En un formulario único e independiente, puse un cuadro combinado llamado CmbIdte, el cual toma los datos de la tabla Terceros, toma dos columnas, el Idte y Nomtercero, el Idte lo oculta por ser clave principal, o sea, lo que muestra es el nombre del tercero, pero en realidad ese combo lo que guarda es el Id del tercero, es decir, Idte. Lo que pretendo es que cuando el cuadro combinado reciba el foco, al escribir en él, filtre los nombres de los terceros, por el texto que estoy escribiendo, no importando que este al inicio, en el medio o al final del nombre, pero no filtra nada. Lo que he realizado es con base en unos ejemplos del señor: Sveinbjorn el Rojo. Donde explica esto, pero el cuadro combinado de el tiene una sola columna y no dos como el que estoy tratando de manipular. En todo caso, lo que quiero es que me expliquen a ver como se hace el requerimiento. Anexo el código que he realizado.

Private Sub CmbIdte_Change()

    Me.CmbIdte.RowSource = "Select Distinct NomTercero From Terceros where NomTercero Like '*" & Me.CmbIdte.Text & "*' order by Tercero;"

    Me.CmbIdte.Dropdown

End Sub  

1 respuesta

Respuesta
2

Si te refieres a este ejemplo: Cuadros combinados inteligentes, léelo de nuevo, porque el segundo sistema que explico, el cuadro combinado trabaja con dos columnas de una tabla (un ID autonumérico y un campo de texto, trabajando sobre el ID), exactamente igual que en tu caso...

El ejemplo filtra por los valores que empiezan, pero si lo pones así:

Private Sub Editorial_Change()
    Me.Editorial.RowSource = "SELECT [TEditorial].[IDEditorial], [TEditorial].[Editorial] FROM TEditorial " _
                            & "WHERE Editorial LIKE '*" & Me.Editorial.Text & "*' ORDER BY [Editorial];"
    Me.Editorial.Dropdown
End Sub

filtra por cualquier parte (y comprobado)

Buenas tardes Sveinbjorn El Rojo, no le había contestado, por que desde anoche estoy probando a ver si hago funcionar esto pero, nada no he podido, nuevamente acudo a usted para ver si me echa una mano, en realidad no he podido con esto. Le he dado por todos lados y nada. No se que me esta pasando o que estoy haciendo mal que no me funciona. Te pido encarecidamente que me eches una manito. Si gustas me das tu correo y te envío la base de datos de prueba donde estoy haciendo el código. Además anexo el código que tengo en la actualidad. Los campos se llaman Idte (Autonumérico) y Tercero (Texto).

Private Sub CmbIdte_Change()
Me.CmbIdte.RowSource = "SELECT [Terceros].[Idte.Tercero], [Terceros].[Tercero] FROM Terceros " _
& "WHERE Tercero LIKE '*" & Me.CmbIdte.Text & "*' ORDER BY [Tercero];"
Me.CmbIdte.Dropdown
End Sub

Te explico algo cuando dejo esta parte sin el punto [Idte. Tercero]. Apenas presiono una letra me sale un mensaje pidiendo el valor del parámetro de Terceros.IdteTercero, si le pongo punto entre Idte y tercero no me pide el parámetro pero tampoco filtra. Total me tiene loco este código

Vamos a ver... Si el campo se llama Idte, ¿por qué motivo en la Sql lo llamas IdteTercero o peor aún, Idte. Tercero?

Si realmente se llama como dices (Idte), la primera línea sería :

Me.CmbIdte.RowSource = "SELECT [Terceros].[Idte], [Terceros].[Tercero] FROM Terceros " _
& "WHERE Tercero LIKE '*" & Me.CmbIdte.Text & "*' ORDER BY [Tercero];"

Buenos días. Ahora si funciona. Un error tan notable y no lo había observado. Cuando a uno se le aturde la mente no ve nada. Un millón de gracias por tu ayuda. Dios te bendiga. 

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas