Access - Filtrar cuadro combinado

 
Vista:
sin imagen de perfil
Val: 7
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Filtrar cuadro combinado

Publicado por Fernando (4 intervenciones) el 01/03/2019 19:22:14
Hola a todos, quisiera solicitarles nuevamente su ayuda. En una base de datos ACCESS, tengo un formulario en este he colocado un cuadro combinado que recoge los datos de una tabla que la he llamado “MATERIALES”, en ella hay una lista de materiales de construcción, muchos con nombres muy similares. En algún momento serán tantos que me resultara difícil encontrar el que busco. Por lo que es necesario que al buscar uno de los materiales los busque indiferentemente del orden en que este se digite. Por ejemplo INTERRUPTOR TERMO.(BREAKER) 1P/ 15 A , INTERRUPTOR TERMO.(BREAKER) 2P/ 40 A, son dos artículos con nombres muy similares. Quisiera encontrar la forma de encontrarlos escribiendo una parte de su nombre y en caso de que no esté en la lista un material me indique que el material que busco no está

Desde ya le agradezco su colaboración
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 826
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Filtrar cuadro combinado

Publicado por Jesús Manuel (363 intervenciones) el 11/03/2019 10:16:21
Te propongo una forma pero cambiando el cuadro combinado por un cuadro de lista. Aunque funciona tanto con cuadro combinado como con lista, el problema del cuadro combinado es que tendrías que estar abriendo en cada caso para ver los valores filtrados, mientras que con la lista ya estarían en pantalla.

Partimos de un formulario al que llamaremos formMateriales, con un cuadro de texto independiente con nombre txtBuscar y una lista de nombre lstMateriales.

En el origen de lista (propiedades/datos) del cuadro de lista generamos un consulta con los campos de la tabla MATERIALES y en el campo del nombre, como criterio:
Como "*" & [Formularios]![formMateriales]![txtBuscar].[Texto] & "*"


Como eventos de txtBuscar:

Evento cambiar/change:

1
2
3
4
5
6
Me.lstMateriales.Requery 'Recarga de los valores de la lista en función del texto indicado en txtBuscar
If Me.lstMateriales.ListCount < 2 Then ' Si la lista no tiene valores, el color del texto de txtBuscar es rojo, lo que implica el material no está en la lista
    Me.txtBuscar.ForeColor = RGB(255, 0, 0)
Else
    Me.txtBuscar.ForeColor = RGB(0, 0, 0)
End If


Evento doble clic:
1
2
Me.txtBuscar = ""
Me.lstMateriales.Requery
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 7
Ha aumentado su posición en 8 puestos en Access (en relación al último mes)
Gráfica de Access

Filtrar cuadro combinado

Publicado por Fernando (4 intervenciones) el 12/03/2019 19:25:57
Gracias por su interés y su pronta respuesta. Sus indicaciones funcionan muy bien, el problema es que el cuadro depende de un campo en la tabla materiales, este no puede ser independiente ya que registra la selección en la tabla respectiva. Por lo que esta idea, aunque muy buena y eficiente, no seria de mucha utilidad. Adjunto una foto que puede servirle para ilustrar mejor lo que pretendo. Desde ya le agradezco su amable atención y le pido nuevamente su colaboración para que me ayude a encontrar una respuesta.
Sin-titulo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 826
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Filtrar cuadro combinado

Publicado por Jesús Manuel (363 intervenciones) el 14/03/2019 14:54:23
1. Creo que la imagen no se corresponde con lo que indicabas en el primer post ya que me parece que el cuadro combinado está en un subformulario, por lo que estoy de acuerdo contigo en que mi planteamiento no es útil en este caso.

2. Lo que te comentaba que tenía que ser un campo independiente es un cuadro de texto, no el campo combinado o el cuadro de lista.

3. Aunque el cuadro combinado, o un cuadro de lista, lo insertes como elemento independiente en el formulario, si como origen de lista (propiedades/datos), generas una consulta a partir de la tabla materiales, los valores de este cuadro pasan a depender de los registros de la tabla materiales.


Puesto que creo que lo que tienes es un formulario principal (lo llamare formCotizacion), con un subformulario (lo llamare subformMateriales), un cuadro combinado (lo llamare cboMateriales) y por lo que veo subformMateriales se ha creado como tipo TABULAR (si lo tienes ocmo HOJA DE DATOS creo que no van a funcionar los eventos), podrías hacer:

1) Una copia de la base de datos para no arrepentirte y poder volver a lo que tienes
2) Insertar un cuadro/campo de texto independiente antes de campo con Material en subformMateriales y lo llamaremos txtBuscar
3) Cambiar el origen de lista ((propiedades/datos) de cboMateriales para que se base en una consulta del campo del nombre del material de la tabla materiales y como criterio indicar:

Como "*" & [Formularios]![formCotizacion].[Formulario]![subformMateriales]![txtbuscar].[Texto] & "*"

4) Como eventos de txtBuscar, sería lo mismo que indique antes, pero adaptado a los nuevos nombres:

Evento cambiar/change:

Me.cboMateriales.Requery
If Me.cboMateriales.ListCount < 2 Then
Me.txtBuscar.ForeColor = RGB(255, 0, 0)
Else
Me.txtBuscar.ForeColor = RGB(0, 0, 0)
End If


Evento doble clic:

Me.txtBuscar = ""
Me.cboMateriales.Requery


5) Aunque al escribir en txtBuscar se va a ver el mismo valor en todos los registros de subformMateriales, como es un cuadro independiente, no se guarda ningún valor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar