Seleccionar items de un listbox con dos combobox y un textbox

Solicito su valiosa ayuda con los siguiente, necesito mostrar en un listbox los resultados de una preselección de dos combobox y un texbox, pero no se como hacerlo.

T002Prodcutos tengo:

Campo 1 = idProductos autonumérico con más de 2500 items

Campo 2 = CodigoProducto

Campo 3 = LineaNegocio

Campo 4 = GrupoInsumo

Campo 5 = DescripcionProducto

El listboxProdcutos carga estos campos (mas otros) con el siguiente código en la propiedad en origen de fila:

SELECT [t002Productos].[idProductos], [t002Productos].[CodigoProducto], [t002Productos].[LineaNegocio], [t002Productos].[GrupoInsumo], [t002Productos].[DescripcionProducto], [t002Productos].[UnidadMedida], [t002Productos].[Referencia], [t002Productos].[MarcaProducto] FROM t002Productos ORDER BY [LineaNegocio], [GrupoInsumo], [CodigoProducto];

CmbLineaNegocio selecciona el campo 3 y cmbGrupoInsumo selecciona el campo 4 cuyos productos estén en lo escogido en el cmbLineaNegocio. Eso lo hago en el siguiente código que me ha proporcionado un experto de este grupo.

Private Sub cmbLineaNegocio_GotFocus()

    cmbLineaNegocio.RowSource = "select LineaNegocio from t002Productos group by LineaNegocio"

End Sub

Private Sub cmbGrupoInsumo_GotFocus()

    cmbGrupoInsumo.RowSource = "select GrupoInsumo from t002Productos where LineaNegocio='" & Me.cmbLineaNegocio & "' group by GrupoInsumo"

End Sub

Ahora lo que necesito es que en el texboxDescripcion, poder escribir por ejemplo *Circuito* y el listbox me realice las tres selecciones y me muestre solo los productos que estén de acuerdo con lo descrito en los dos combobox y el textbox.

ejemplo: 

cmbLineaNegocio = Eléctrico. El listbox debe actualizarse solo con los productos cuyo campo LineaNegocio sea eléctrico. Luego

cmbGrupoInsumo = Tableros  el listbox debe actualizarse solo con los productos cuyo campo LineaNegocio = Eléctrico y GrupoInsumo sea Tableros finalmente

txbDescripción = *Circuitos el listbox debe actualizarse solo con los productos cuyo campo LineaNegocio = Eléctrico y GrupoInsumo sea Tableros y en el campo DescripcionProducto contenga el texto "Circuitos".

Esto para facilitar al usuario escoger el producto que necesita gestionar en los pedidos de material para los proyectos de la empresa donde trabajo.

1 respuesta

Respuesta
2

Tienes que hacer lo mismo que con el cuadro combinado dependiente, es decir, en el evento "al recibir el enfoque" o en otro que consideres más adecuado, le cambias el origen al cuadro de lista ( pongo la sql incompleta para abreviar):

listboxProdcutos.rowsource ="SELECT.... FROM t002Productos WHERE LineaNegocio='" & Me.cmbLineaNegocio & "' And GrupoInsumo='" & me.cmbGrupoInsumo & "' And  DescripcionProducto Like '*" & Me.texboxDescripcion & "' ORDER BY..."

Hola El Rojo... muchas gracias por tomar el tiempo para contestar. creo es un error tonto de mi parte.

la parte de los combos me funciona, pero no logro que el listbox se actualice cuando digito caracteres en el textbox. ejemplo.

si la descripción del producto 1 es "ALAMBRE ALARMAS abc"

y la del producto 2 es "ALAMBRE DESNUDO abc"

la idea es que en el textbox pueda digitar ejemplo: *alar* y me mostrará el producto 1 y si digito *des, mostrará el producto 2

este es el código para por favor me ayudes a ver donde está el error

Private Sub cmbLineaNegocio_GotFocus()
cmbLineaNegocio.RowSource = "select LineaNegocio from t002Productos group by LineaNegocio"
End Sub
Private Sub cmbLineaNegocio_AfterUpdate()
lbxProductos.RowSource = "SELECT [t002Productos].[idProductos], [t002Productos].[CodigoProducto], [t002Productos].[LineaNegocio], [t002Productos].[GrupoInsumo], [t002Productos].[DescripcionProducto], [t002Productos].[UnidadMedida], [t002Productos].[Referencia], [t002Productos].[MarcaProducto] FROM t002Productos WHERE LineaNegocio='" & Me.cmbLineaNegocio & "' ORDER BY [CodigoProducto]"
End Sub
Private Sub cmbGrupoInsumo_GotFocus()
cmbGrupoInsumo.RowSource = "select GrupoInsumo from t002Productos where LineaNegocio='" & Me.cmbLineaNegocio & "' group by GrupoInsumo"
End Sub
Private Sub cmbGrupoInsumo_AfterUpdate()
lbxProductos.RowSource = "SELECT [t002Productos].[idProductos], [t002Productos].[CodigoProducto], [t002Productos].[LineaNegocio], [t002Productos].[GrupoInsumo], [t002Productos].[DescripcionProducto], [t002Productos].[UnidadMedida], [t002Productos].[Referencia], [t002Productos].[MarcaProducto] FROM t002Productos WHERE LineaNegocio='" & Me.cmbLineaNegocio & "' And GrupoInsumo='" & Me.cmbGrupoInsumo & "' ORDER BY [CodigoProducto]"
End Sub
Private Sub txbBuscaDescripcion_GotFocus()
lbxProductos.RowSource = "SELECT [t002Productos].[idProductos], [t002Productos].[CodigoProducto], [t002Productos].[LineaNegocio], [t002Productos].[GrupoInsumo], [t002Productos].[DescripcionProducto], [t002Productos].[UnidadMedida], [t002Productos].[Referencia], [t002Productos].[MarcaProducto] FROM t002Productos WHERE LineaNegocio='" & Me.cmbLineaNegocio & "' And GrupoInsumo='" & Me.cmbGrupoInsumo & "' And DescripcionProducto Like '*" & Me.txbBuscaDescripcion.Text & "' ORDER BY [CodigoProducto]"
End Sub

como siempre muchas gracias

saludos...

jorgef

Usar el evento "al recibir el enfoque" del cuadro de texto no tiene mucho sentido. Sería mejor que usases "después de actualizar", con esta construcción de la sql:

"....And DescripcionProducto Like '*" & Me.txbBuscaDescripcion & "*' ORDER BY [CodigoProducto]"

O so quieres que el cuadro se lista se actualice al teclear cala letra del textbox, en el evento "al cambiar", con esto :

"...And DescripcionProducto Like '*" & Me.txbBuscaDescripcion.Text & "*' ORDER BY [CodigoProducto]"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas