Filtrar cuadro combinado en cualquier parte de la lista

Estoy creando un cuadro combinado que busque en la tabla CLIENTES en el campo CLIENTE el nombre en cualquier parte de la lista desplegable, pero se bloquea con esta secuencia y no se porque.

Private Sub Cuadro_combinado7_Change()
Cuadro_combinado7.RowSource = "select CLIENTE from CLIENTES where CLIENTE like ""*""&'" & Me.Cuadro_combinado7 & "'& ""*"" group by CLIENTE"
End Sub

1 respuesta

Respuesta
2

Me da que tienes mal construida la SQL. Prueba así:

Private Sub Cuadro_combinado7_Change()
Cuadro_combinado7.RowSource = "select CLIENTE from CLIENTES where CLIENTE like '*"  & Me.Cuadro_combinado7.text & "*' group by CLIENTE"
End Sub

Ahora si, pero al presionar enter debería mostrar la lista desplegable con las opciones de búsqueda, pero no lo hace hasta cuando picho el cuadro de lista. ¿Tendré que agregar algo más?

Private Sub Cuadro_combinado7_Change()
Cuadro_combinado7.RowSource = "select CLIENTE from CLIENTES where CLIENTE like '*"  & Me.Cuadro_combinado7.text & "*' group by CLIENTE"
Cuadro_combinado7.Dropdown
End Sub

Hace un tiempo escribí un artículo sobre el tema, lo puedes ver aquí: http://neckkito.xyz/nck/index.php/ejemplos/16-controles/127-cuadros-combinados-inteligentes

Muchas gracias, el cuadro combinado funciona a la perfección.

No hay de qué. Si la duda está resuelta, no dejes de valorar mi respuesta.

Perdona, me había olvidado de valorar tu ayuda.

Apropósito, si al cuadro combinado le agrego otra columna que seria el código, que tendría que agregar en la SQL  para que también lo pueda buscar por código, pero que me aparezca solo el nombre del cliente en el resultado final

Aunque le agregues más columnas, el cuadro combinado solo devuelve una (la de los valores que escribes) por lo que no veo muy factible que puedas buscar por una u otra al escribir en el propio combinado...

oki, muchas Gracias

Le he estado dando vueltas y quizás así te funcione (no lo he probado), suponiendo que código también sea de tipo texto :

Private Sub Cuadro_combinado7_Change()
Cuadro_combinado7.RowSource = "select CLIENTE,Codigo from CLIENTES where CLIENTE like '*"  & Me.Cuadro_combinado7.text & "*' OR Codigo CLIENTE like '*"  & Me.Cuadro_combinado7.text & "*' group by CLIENTE, Codigo"
Cuadro_combinado7.Dropdown
End Sub

Por probar no pierdes nada

El campo de CODIGO_CLIENTE es tipo numero y agregue la SQL sugerida pero no funciona, ya que en el cuadro combinado ni siquiera se despliega el listado y al tratar de desplegar la lista no sale nada. muchas gracias.

Private Sub Cuadro_combinado7_Change()
Cuadro_combinado7.RowSource = "select CLIENTE,CODIGO_CLIENTE from CLIENTES where CLIENTE like '*" & Me.Cuadro_combinado7.Text & "*' OR CODIGO_CLIENTE CLIENTE like '*" & Me.Cuadro_combinado7.Text & "*'group by CLIENTE, CODIGO_CLIENTE"
Cuadro_combinado7.Dropdown
End Sub

No te funciona probablemente (ya te comenté que no lo había probado y no sé si realmente funcionará) porque la SQL está mal. Sería:

Private Sub Cuadro_combinado7_Change()
Cuadro_combinado7.RowSource = "select CLIENTE, CODIGO_CLIENTE from CLIENTES where CLIENTE like '*" & Me.Cuadro_combinado7.Text & "*' OR CODIGO_CLIENTE like *" & Me.Cuadro_combinado7.Text & "* group by CLIENTE, CODIGO_CLIENTE"
Cuadro_combinado7.Dropdown
End Sub

También podrías probar algo así:

Private Sub Cuadro_combinado7_Change()
If IsNumeric(Me.Cuadro_combinado7.Text) Then
Cuadro_combinado7.RowSource = "select CLIENTE, CODIGO_CLIENTE from CLIENTES where CODIGO_CLIENTE like *" & Me.Cuadro_combinado7.Text & "* group by CLIENTE, CODIGO_CLIENTE"
Else
Cuadro_combinado7.RowSource = "select CLIENTE, CODIGO_CLIENTE from CLIENTES where CLIENTE like '*" & Me.Cuadro_combinado7.Text & "*' group by CLIENTE, CODIGO_CLIENTE"
End If
Cuadro_combinado7.Dropdown
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas