Este tutorial de acceso explica cómo crear un formulario de búsqueda con múltiples criterios.
También puede leer:
Access DoCmd.Método OpenForm para abrir Formulario de Acceso
El valor del Cuadro combinado de acceso depende de otro Cuadro combinado
Devolver entrada de Formulario de acceso para Acceder a Informe o Formulario o Consulta
Acceder crear Formulario de búsqueda con múltiples criterios
A veces es necesario crear un Formulario de búsqueda donde los usuarios puedan seleccionar criterios específicos. La solución más simple es filtrar directamente los datos para cada campo, como usar AutoFiltro en Excel, pero esto no es elegante en absoluto.
Access proporciona una función de formulario llamada Filtro por Formulario que es muy fácil de usar.
Seleccionar una Tabla / Consulta > Crear > Formulario > Aplicar filtro / Ordenar
Ahora puede seleccionar varios criterios, incluso puede seleccionar un valor del cuadro desplegable. Sin embargo, esos valores de los cuadros desplegables son independientes unos de otros.
También puede utilizar los criterios Or haciendo clic en la pestaña Or.
Cuando la selección haya terminado, haga clic en Alternar filtro
Una mejor manera de filtrar es que los usuarios elijan entre los cuadros desplegables dependientes.
Por ejemplo, en el primer cuadro desplegable, los usuarios eligen departamento A, y luego en el segundo cuadro desplegable, los usuarios pueden ver una lista de personas del departamento A.
Este artículo le mostrará cómo hacer dicho filtrado.
Crear un formulario de resultados
Supongamos que tenemos una consulta como se muestra a continuación. Nuestro objetivo es permitir a los usuarios seleccionar departamento para mostrar la información de los empleados, o seleccionar departamento + ID de empleado.
Vamos a crear un «formulario de resultados» que muestre el resultado de la búsqueda.
Departamento de | ID de Empleado | Fecha de contratación | Sueldo | Subsidio |
---|---|---|---|---|
Cuenta | 1 | 1/1/2000 | 10000 | 100 |
Admin | 2 | 1/1/2001 | 20000 | 200 |
Admin | 3 | 1/1/2002 | 30000 | 300 |
Admin | 4 | 1/1/2003 | 40000 | 400 |
Nómina | 5 | 1/1/2004 | 50000 | 500 |
HR | 6 | 1/1/2005 | 60000 | 600 |
haga Clic en la Consulta y la virtud de la ficha Crear, seleccione Más Formas > Hoja de datos
Ahora, guarde el Formulario como result_frm. En caso de que cambie accidentalmente los datos del resultado, debe cambiar la Propiedad Bloqueada de cada Cuadro de texto a Sí
En este ejemplo, quiero devolver todos los campos de Query1 en el formulario de resultados. Elijo Hoja de datos porque cada registro se puede mostrar en una fila con barra de desplazamiento horizontal. No prefiero usar Forma Continua o Forma única porque cada registro se muestra en varias filas.
Crear un Formulario de búsqueda
Crear un formulario en blanco y luego agregar dos Cuadros combinados (Combo_Dept, Combo_EmpID) y un botón (search_btn) como se muestra a continuación.
1) Haga clic en Combo_Dept, en la propiedad Origen de fila, escriba
SELECT DISTINCT Department FROM Query1;
El origen de fila es lo que puede seleccionar en el cuadro combinado.
2) Haga clic en Combo_EmpID, en la propiedad Row Source, escriba
SELECT FROM Query1 WHERE =!!;
3) Seleccione Combo_Dept, seleccione Después del evento de actualización y cree el siguiente Procedimiento
Private Sub Combo_Dept_AfterUpdate() Me.Combo_EmpID = Null Me.Combo_EmpID.RequeryEnd Sub
Al seleccionar un departamento, Combo_EmpID se restablece a Null y luego vuelve a ejecutar la consulta
4) Haga clic con el botón derecho en search_btn y luego elija Build Event
Private Sub search_btn_Click() If IsNull(Me.Combo_EmpID) Then searchCriteria = "='" & Me.Combo_Dept & "'" searchSQL = "Select * FROM Query1 where " & searchCriteria Else searchCriteria = "='" & Me.Combo_Dept & "' AND =" & Me.Combo_EmpID searchSQL = "Select * FROM Query1 where " & searchCriteria End If DoCmd.OpenForm "result_frm", 3, searchSQLEnd Sub
Ahora ha creado con éxito un formulario de búsqueda simple. Una vez que haya seleccionado los criterios en el Formulario de búsqueda, una vez que haga clic en el botón buscar, aparecerá el Formulario de resultados y mostrará el resultado.