Mostrando entradas con la etiqueta Formularios. Mostrar todas las entradas
Mostrando entradas con la etiqueta Formularios. 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

2015-05-11

Ocultar Access al usuario salvo el formulario

Title

Problema

Deseamos mostrar solamente un formulario, ocultando totalmente Access al usuario.

Solución

Utilizaremos como ejemplo la base de datos Neptuno.

Elegimos un formulario que deseamos mostrar —Panel de control principal— y crearemos un nuevo formulario —Formulario1— que estableceremos como formulario predeterminado al abrir la base de datos. Después es necesario añadir varias líneas de código en ambos formularios.

  1. En el Formulario1, Clic con el botón secundario en el cuadrado situado en la esquina superior izquierda del formulario y seleccionamos: Generador de código.
  2. O bien a través de la hoja de propiedades del formulario.

  3. Se abrirá el editor de Visual Basic e introduciremos el siguiente código:
  4. Option Explicit
    
     Const SW_HIDE = 0
     Const SW_NORMAL = 1
     Const SW_MINIMIZED = 2
     Const SW_MAXIMIZED = 3
    
    Private Declare Function ShowWindow Lib "user32" _
      (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    
    Private Sub Form_Open(Cancel As Integer)
       Call ShowWindow(hWndAccessApp, SW_HIDE)
       DoCmd.OpenForm "Panel de control principal", windowmode:=acDialog
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
    Dim lngRetCode As Long
       lngRetCode = ShowWindow(hWndAccessApp, SW_MAXIMIZED)
    End Sub
    
    El código anterior al abrir el formulario predeterminado —Formulario1— esconde la ventana de Access y abre el formulario que deseamos mostrar: Panel de control principal. Al descargar restablecemos la ventana.

  5. En el formulario que deseamos mostrar en nuestro ejemplo —Panel de control principal— repetimos los pasos anteriores y copiamos el siguiente código.
  6. Private Sub Form_Unload(Cancel As Integer)
       Application.Quit
    End Sub
    
    Con la línea anterior al cerrar el formulario que mostramos —Panel de control principal también cerramos el Access evitando que se siga ejecutando en un segundo plano.

  7. Guardamos los cambios en el formulario y cerramos el Access
Al volver a abrir este fichero de Access mostrará solamente el formulario Panel de control principal, quedando oculta tanto la cinta de opciones como el panel de exploración. Si deseamos tener acceso normal a este fichero, mantenemos presionada la tecla Mayús mientras abrimos el mismo.

Referencias

Nube de datos