¿Cómo hacer para que un CuadroCombinado, se vaya filtrando de acuerdo lo que escribo?

Soy nuevo en Access y estoy tratando de hacer que un cuadro combinado de un Formulario que tiene el origen de datos a través de una consulta a una tabla, este se vaya filtrando y solo me vaya mostrando los registros que tienen coincidencia.

Adjunto una imagen para mayor detalle:

Por ejemplo en este caso al escribir "OVALLE", me gustaría que solo se visualizara el registro que contiene dicha palabra.

2 respuestas

Respuesta
1

Puedes hacerlo de muchas formas, te pongo dos y tu decides. Vamos a suponer que tengo un formulario con muchos registros basado en la tabla Productos con un combinado( aunque no sería necesario, ya que podría ser un cuadro de texto)

En el combinado escribo una e y

Ahora escribo una r

Ya me los ha reducido a 21 productos que tengan la cadena er. Si ahora escribo una v

El combinado se llama ElegirOtro y en sus propiedades-Eventos-Después de actualizar le tengo puesto

Private Sub ElegirOtro_Change()
Me.RecordSource = "select * from productos where producto like '*" & Me.ElegirOtro.Text & "*'"
ElegirOtro.SetFocus
End Sub

Pero si lo que quieres es que te "filtre" en el propio combinado. Por ejemplo

Le pongo una r 

y ahora una v

En este caso, el código del evento Después de actualizar del combinado ElegirOtro es

Private Sub ElegirOtro_Change()
ElegirOtro.RowSource = "select producto from productos where producto like '*" & Me.ElegirOtro.Text & "*'"
ElegirOtro.Dropdown
End Sub

Hola Julian,

Muchas gracias por tu respuesta muy detallada, tengo algunas dudas porque en realidad entiendo poco VBA.

Mira deje el código del evento después de actualizar el cuadrocombinado (se llamada CLIENTE_LICITACION_ID), de esta forma:

Private Sub CLIENTE_LICITACION_ID_AfterUpdate()
CLIENTE_LICITACION_ID.RowSource = "select producto from productos where producto like '*" & Me.FORMULARIO_CLIENTE_LICITACION_ID.Text & "*'"
CLIENTE_LICITACION_ID.Dropdown
End Sub

Pero tengo la duda en la parte:

"select producto from productos where producto like '*" (todo lo que esta con negrita)

Entiendo que lo que esta con negrita debería cambiarlo pero no entiendo porque cosa.

Agradezco de antemano tu ayuda, quedo atento.

Saludos.

Supongamos que el origen de la fila del combinado es el campo Regimiento de la consulta BuscarUnidad. Tendrías que ponerlo como

..."Select Regimiento from BuscarUnidad where regimiento like '*" & me.cliente_licitacion_id.text & "*'"

Para ser más concreto deberías decir cuantas columnas tiene el combinado y cual es la dependiente.

Por otro lado, fíjate que el código lo pongo en el evento Al cambiar del cuadro combinado, no en el evento Después de actualizar

Hola Julián, muchas gracias por tu ayuda, pero aun no puedo hacer que funcione voy a poner algunas imágenes:

Primera: Esta es la tabla que tiene el cuadro combinado que saca la información de la tabla de clientes:

Esta es la consulta que hace:

SELECT TABLA_CLIENTE.CLIENTE_ID, TABLA_CLIENTE.CLIENTE_NOMBRE FROM TABLA_CLIENTE ORDER BY TABLA_CLIENTE.CLIENTE_ID; 

Segunda:

Esta es la consulta que saca la información:

Tercera:

Este es el formulario que uso para ingresar información y tiene el cuadro combinado.

Quedo atento a los comentarios y gracias por la ayuda.

Saludos.

Vamos a hacer una cosa, si lo datos no son privados haz una copia de tu base y me la mandas a [email protected]

Si los datos son privados haz una copia con tres o cuatro registros inventados y me la mandas.

En cualquiera de los casos, si lo haces, en el asunto del mensaje pon tu alias Hugo Eduardo, ya que si no sé quien me escribe ni los abro.

Respuesta
1

Complemento la respuesta eliminando los acentos:

Observe que la palabra a buscar está en tres registros y escritas con y sin tilde o minúsculas y mayúsculas.

Este es el código del evento Al cambiar del cuadro combinado.

Private Sub cboBuscar_Change()
  Me.cboBuscar.RowSource = "select id,producto from productos where strconv([producto],2,1042) " & _
  " like '*" & StrConv(Me.cboBuscar.Text, 2, 1042) & "*' ORDER BY producto"
  Me.cboBuscar.Dropdown
End Sub

Hola Eduardo,

Muchas gracias por tu ayuda, arriba deje unas dudas.

Agradezco de antemano, quedo atento.

Saludos.

Por esto en mi ejemplo le adicione un id porque es el valor que debe quedar en el campo

Private Sub cboBuscar_Change()
  Me.cboBuscar.RowSource = "select CLIENTE_ID,CLIENTE_NOMBRE FROM TABLA_CLIENTE where strconv([CLIENTE_NOMBRE],2,1042) " & _
  " like '*" & StrConv(Me.NOMBRE_CUADRO_COMBINADO.Text, 2, 1042) & "*' ORDER BY CLIENTE_NOMBRE"
  Me.NOMBRE_CUADRO_COMBINADO.Dropdown
End Sub

Cambie NOMBRE_CUADRO_COMBINADO por el nombre en su formulario.

La estructura de las tablas no están bien, toda vez, que deben tener un id Autonumérico. Veo que se está complicando utilizando el evento Al cambiar en un cuadro combinado, si quiere envíeme un ejemplo de su base de datos a [email protected], favor anotar en el asunto la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas