Access - Fltros combinados

 
Vista:
sin imagen de perfil
Val: 19
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Fltros combinados

Publicado por jucaqu05 (13 intervenciones) el 14/12/2005 20:55:57
Buenas tardes,

Tengo un formulario en el cual tengo un control texto y tres cuadros combinados. La idea es que cada vez que yo actualice cualquier control la cantidad de registros se actualicen. ahh, se me olvidaba estos controles son independientes.

Por ejemplo,
En el formulario(Formularios continuos) tengo 100 registros. En el encabezdo del formulario tengo los cuatro controles arriba mencionados...

Digito el valor en el cuadro de texto, p..e 58659 (numero de cedula) al salir del control los registros me quedan en 36 (se muestran de inmediato)

Despues elijo un valor de cualquiera de los cuadros combinados, p.e. ACTIVO y de esta manera los registros quedan en 20 y asi continuar con los otros controles.

YO LO ESTOY HACIENDO ASI...PERO ES MUY COMPLICADO PUES DE ACURDO A LA CANTIDAD DE CONTROLES DEBO HACER LA CANTIDAD DE COMBINACIONES...

If (FCedula) = 0 And FPrioridad = "TODAS" And FTipo = "TODOS" And FEstado = "TODOS" Then
FILTROS = ("SELECT TBL_Ticket.Ticket, TBL_Ticket.Fec_Ingreso, TBL_Ticket.Cedula, TBL_Ticket.Lugar, TBL_Ticket.Descripcion, TBL_Ticket.Prioridad, TBL_Ticket.Estado, TBL_Ticket.Asignado, TBL_Ticket.Tipo " _
& "FROM TBL_Ticket GROUP BY TBL_Ticket.Ticket, TBL_Ticket.Fec_Ingreso, TBL_Ticket.Cedula, TBL_Ticket.Lugar, TBL_Ticket.Descripcion, TBL_Ticket.Prioridad, TBL_Ticket.Estado, TBL_Ticket.Asignado, TBL_Ticket.Tipo; ")

AGHRADEZCO SI ME PUEDEN AYUDAR....
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Consulta dinámica para filtrar registros en un formulario independiente

Publicado por Alejandro (4142 intervenciones) el 15/06/2023 16:34:27
Buenos días.

Para simplificar el código y evitar tener múltiples combinaciones de condiciones, puedes utilizar una consulta dinámica en lugar de generar una consulta SQL estática. Aquí tienes un ejemplo de cómo puedes implementar esto en VBA para tu formulario:

1. Abre el editor de código de VBA en Access presionando Alt + F11.
2. Encuentra el evento AfterUpdate de cada uno de los controles (cuadro de texto y cuadros combinados) en tu formulario y añade el siguiente código dentro de cada uno de esos eventos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub FCedula_AfterUpdate()
    Me.Requery
End Sub
 
Private Sub FPrioridad_AfterUpdate()
    Me.Requery
End Sub
 
Private Sub FTipo_AfterUpdate()
    Me.Requery
End Sub
 
Private Sub FEstado_AfterUpdate()
    Me.Requery
End Sub

El código `Me.Requery` se utiliza para volver a consultar y actualizar el origen de datos del formulario, reflejando así los cambios en los registros mostrados.

3. Ahora, en la propiedad "Origen de registros" del formulario, establece la siguiente consulta dinámica:

1
2
3
4
5
6
7
SELECT TBL_Ticket.Ticket, TBL_Ticket.Fec_Ingreso, TBL_Ticket.Cedula, TBL_Ticket.Lugar, TBL_Ticket.Descripcion, TBL_Ticket.Prioridad, TBL_Ticket.Estado, TBL_Ticket.Asignado, TBL_Ticket.Tipo
FROM TBL_Ticket
WHERE ((TBL_Ticket.Cedula = Forms!TuFormulario!FCedula OR Forms!TuFormulario!FCedula Is Null)
    AND (TBL_Ticket.Prioridad = Forms!TuFormulario!FPrioridad OR Forms!TuFormulario!FPrioridad = "TODAS")
    AND (TBL_Ticket.Tipo = Forms!TuFormulario!FTipo OR Forms!TuFormulario!FTipo = "TODOS")
    AND (TBL_Ticket.Estado = Forms!TuFormulario!FEstado OR Forms!TuFormulario!FEstado = "TODOS"))
GROUP BY TBL_Ticket.Ticket, TBL_Ticket.Fec_Ingreso, TBL_Ticket.Cedula, TBL_Ticket.Lugar, TBL_Ticket.Descripcion, TBL_Ticket.Prioridad, TBL_Ticket.Estado, TBL_Ticket.Asignado, TBL_Ticket.Tipo;

Asegúrate de reemplazar "TuFormulario" por el nombre real de tu formulario.

Con esto, cada vez que se actualice uno de los controles (cuadro de texto o cuadro combinado), se ejecutará el evento AfterUpdate correspondiente y se volverá a consultar la base de datos, filtrando los registros según los valores ingresados en los controles.

Espero que esta solución te ayude a simplificar tu código y actualizar los registros correctamente en función de los controles independientes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar