Práctica: En este caso vamos añadir al formulario [Productos] un Cuadro Combinado y un Grupo de Opciones. El cuadro combinado nos permitirá buscar un producto por su nombre y el grupo de opciones filtrar los productos por categoría. Formulario, combo y grupo de opciones tienen que trabajar de forma sincronizada.
Private Sub cboBuscarProducto_AfterUpdate() Dim Producto_seleccionado As Long 'Se almacena el identificador del producto seleccionado Producto_seleccionado = Me.cboBuscarProducto If Me.FilterOn = True Then 'Si había algún filtro activo Me.FilterOn = False 'Suprime el Filtro Me.ProductosPorCategorias = 1 'Asigna el valor Todas las Categorías End If 'Buscar el registro que coincida con el control Dim rs As Object Set rs = Me.Recordset.Clone 'Se localiza el producto seleccionado inicialmente rs.FindFirst "[IdProducto] = " & Str(Nz(Producto_seleccionado, 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub
Private Sub cboBuscarProducto_Enter() AllowEdits = True End Sub Private Sub cboBuscarProducto_Exit(Cancel As Integer) AllowEdits = True End Sub Private Sub ProductosPorCategorias_AfterUpdate() 'Preparamos el filtro según la opción seleccionada If Me.ProductosPorCategorias = 2 Then Me.Filter = "IdCategoría=1" ElseIf Me.ProductosPorCategorias = 3 Then Me.Filter = "IdCategoría=2" ElseIf Me.ProductosPorCategorias = 4 Then Me.Filter = "IdCategoría=3" ElseIf Me.ProductosPorCategorias = 5 Then Me.Filter = "IdCategoría=4" ElseIf Me.ProductosPorCategorias = 6 Then Me.Filter = "IdCategoría=5" ElseIf Me.ProductosPorCategorias = 7 Then Me.Filter = "IdCategoría=6" ElseIf Me.ProductosPorCategorias = 8 Then Me.Filter = "IdCategoría=7" ElseIf Me.ProductosPorCategorias = 9 Then Me.Filter = "IdCategoría=8" End If 'Si el usuario elige la primera opción "Todas las categorías" 'desactivamos cualquier filtro para mostrar todos los productos 'en caso contrario lo activamos. If Me.ProductosPorCategorias = 1 Then Me.FilterOn = False Else Me.FilterOn = True End If End Sub Private Sub ProductosPorCategorias_Enter() AllowEdits = True End Sub Private Sub ProductosPorCategorias_Exit(Cancel As Integer) AllowEdits = False End Sub