Mostrando entradas con la etiqueta Cuadro combinado. Mostrar todas las entradas
Mostrando entradas con la etiqueta Cuadro combinado. Mostrar todas las entradas

2015-11-09

Usar un cuadro combinado para buscar al teclear en Access

Title Queremos poder filtrar los registros de un formulario continuo mediante un cuadro combinado. Según tecleemos el formulario se filtrará y permitirá coincidencias parciales en la búsqueda. Utilizaremos como ejemplo la base de datos Neptuno.

Solución

  1. Creamos un formulario continuo basado en la tabla Clientes.
    1. En el panel de navegación, clic en la tabla Clientes.
    2. En la pestaña Crear, clic en Más formularios > Varios elementos.

  2. Insertamos un cuadro combinado independiente y le damos el nombre de Cuadro_combinado
  3. En la Hoja de propiedades del cuadro combinado, en la pestaña Datos modificamos estas tres propiedades
  4. En Origen de fila, introducimos la siguiente consulta o la creamos con el generador de consultas (clic en los 3 puntos suspensivos).

    SELECT Clientes.NombreCompañía FROM Clientes; 
    
  5. En la Hoja de propiedades del cuadro combinado, en la pestaña Eventos, clic en Al cambiar y copiamos el siguiente código:

    Private Sub Cuadro_combinado_Change2()
    ' Elimina el filtro del formulario,
    ' si el cuadro combinado está vacío
    If Nz(Me.Cuadro_combinado.Text) = "" Then
        Me.Form.Filter = ""
        Me.FilterOn = False
    ' Si se filtra un ítem del cuadro combinado,
    ' realiza una búsqueda exacta en el formulario
    ElseIf Me.Cuadro_combinado.ListIndex <> -1 Then
       Me.Form.Filter = "[NombreCompañía] = '" & _
          Replace(Me.Cuadro_combinado.Text, "'", "''") & "'"
       Me.FilterOn = True
    ' Filtra en formulario con una coincidencia parcial
    Else
        Me.Form.Filter = "[NombreCompañía] Like '*" & _
           Replace(Me.Cuadro_combinado.Text, "'", "''") & "*'"
        Me.FilterOn = True
    End If
    ' Mueve el cursor al final del cuadro combinado
    Me.Cuadro_combinado.SetFocus
    Me.Cuadro_combinado.SelStart = Len(Me.Cuadro_combinado.Text)
    End Sub
    

Empleamos la función Replace para reemplazar el apóstrofe simple ' por el doble ''. Pues si no, al buscar compañías con apóstrofe generaría un error.

Resultado

Ahora podemos o bien seleccionar un elemento de la lista del cuadro combinado, o teclear la cadena de texto que deseemos. Como se puede ver en la imagen, realiza una búsqueda parcial de las cadenas de texto: super, comi or chin.

Referencias

Entradas relacionadas

2014-05-25

Seleccionar elementos en cuadros combinados o de lista

Title

Al abrir un formulario, es posible que los cuadros combinados o de lista no muestren ningún valor. Pero quizá queramos, que por defecto, nos muestren el primer o el último elemento de una lista de opciones. En esta entrada veremos cómo seleccionar estos valores predeterminados.

Vamos a emplear como ejemplo la base de datos Northwind, que puedes descargar aquí. Abrimos el formulario Cuadro de diálogo de informes de ventas. En el cuadro combinado Año aparece por defecto el año 2006. Lo que vamos a modificar es precisamente el valor predeterminado del mismo.

1. Abrimos el formulario en vista Diseño, y para ver la hoja propiedades presionamos F4 o sobre el icono homónimo. También clic en el cuadrado situado en la esquina superior izquierda del formulario y F4 (A). O desde la hoja de propiedades seleccionamos Formulario (B).

2. Tenemos dos opciones:

Al cargar el formulario

1. En la hoja de propiedades del formulario, en la pestaña Eventos, clic sobre Al cargar.

2. Se abre el editor de visual basic. Con la propiedad ItemData especificamos el número de la fila del cuadro combinado o cuadro de lista que deseamos mostrar. Las filas de los cuadros combinados y de lista se indizan empezando por cero. Con ListCount determinamos el número de filas del cuadro combinado o de lista.

Primera fila: Me.cbYear = Me.cbYear.ItemData(0)
Fila n: Me.cbYear = Me.cbYear.ItemData(n-1)
Última fila: Me.cbYear = Me.cbYear.ItemData(Me.cbYear.ListCount - 1)

Private Sub Form_Load()
    SetSalesPeriod ByYear
    InitFilterItems
    Me.cbYear = Me.cbYear.ItemData(0) ' Primera fila
End Sub

Propiedades del cuadro combinado

1. Clic sobre el cuadro Independiente (cbYear) a la derecha de Año y abrimos la hoja de propiedades.

2. En la pestaña Datos de la hoja de propiedades, borramos la fórmula (si nosotros lo creamos desde cero estaría en blanco) en la casilla Valor predeterminado.

3. Introducimos alguna de las siguientes líneas, dependiendo de la fila que queramos mostrar.

Primera fila: [cbYear].[ItemData](0)
Fila n: [cbYear].[ItemData](n-1)
Última fila: [cbYear].[ItemData]([cbYear].[ListCount]-1)

4. Presionamos guardar o Ctrl+G. Cerramos y abrimos el formulario.

Notas

En general, es recomendable la primera opción, al cargar formulario, pues nos permite mantener más fácilmente los valores predeterminados de todos los cuadros combinados o de lista del formulario. Así no tenemos que entrar en las propiedades, la pestaña datos y la casilla valor predeterminado para cada uno de los cuadros combinados o de lista. Además, si fijamos el valor en el formulario al cargar, la selección prevalece sobre la opción especificada en el valor predeterminado en las propiedades del mismo.

Entradas relacionadas

Nube de datos