Access - Consultas dinamicas

 
Vista:

Consultas dinamicas

Publicado por Dani (2 intervenciones) el 05/09/2006 11:51:29
Hola, tengo una bd access con varios campos, entre ellos Pais y Sexo. Ambos tienen limitados sus posibles valores a unas tablas auxiliares.

Tengo tambien un formulario en el cual he colocado dos cuadros de lista de opciones asociados a los campos anteriores. Me gustaria que en el formulario se pudieran marcar opciones (pej: mujer y española) y al clickar sobre un boton de comando se generase una consulta sobre la tabla filtrando segun las opciones marcadas. Hasta ahora lo que hacia era abrir consultas existentes, pero la gran variedad de combinaciones que se me presentan me complica un poco la existencia.

Muchas gracias y Saludos.
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

Generar consulta filtrada desde formulario con cuadros de lista

Publicado por Alejandro (4142 intervenciones) el 25/07/2023 16:13:37
Para lograr generar una consulta filtrada desde un formulario en Access utilizando cuadros de lista, puedes seguir estos pasos:

1. Crea un formulario: Si aún no tienes un formulario en Access, crea uno para poder agregar los cuadros de lista y el botón de comando.

2. Agrega los cuadros de lista: En el formulario, agrega dos cuadros de lista que se asocien a los campos "Pais" y "Sexo" respectivamente. Para ello, asegúrate de que cada cuadro de lista esté vinculado a su tabla auxiliar correspondiente.

3. Agrega un botón de comando: Inserta un botón de comando en el formulario, este será el botón que el usuario presionará para generar la consulta filtrada.

4. Asigna código VBA al botón de comando: Para generar la consulta filtrada, necesitas asignar un código VBA al evento "Al hacer clic" del botón de comando. Puedes hacerlo de la siguiente manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Private Sub cmdGenerarConsulta_Click()
    Dim strSQL As String
    Dim strFilter As String
 
    ' Inicializa la variable para construir el filtro
    strFilter = ""
 
    ' Verifica si se ha seleccionado algún valor en el cuadro de lista de Pais
    If Not IsNull(Me.cboPais) Then
        strFilter = "Pais='" & Me.cboPais & "'"
    End If
 
    ' Verifica si se ha seleccionado algún valor en el cuadro de lista de Sexo
    If Not IsNull(Me.cboSexo) Then
        If strFilter <> "" Then
            strFilter = strFilter & " AND "
        End If
        strFilter = strFilter & "Sexo='" & Me.cboSexo & "'"
    End If
 
    ' Construye la consulta filtrada
    If strFilter <> "" Then
        strSQL = "SELECT * FROM NombreTabla WHERE " & strFilter
    Else
        ' Si no se seleccionaron opciones, muestra todos los registros
        strSQL = "SELECT * FROM NombreTabla"
    End If
 
    ' Abre la consulta filtrada
    DoCmd.OpenQuery "ConsultaFiltrada", acViewNormal, acReadOnly
End Sub

5. Ajusta el código al nombre de tu tabla: Asegúrate de cambiar "NombreTabla" por el nombre de la tabla principal que contiene los campos "Pais" y "Sexo" que deseas filtrar.

6. Crea una consulta llamada "ConsultaFiltrada": Crea una nueva consulta en Access y, en el modo SQL, coloca cualquier instrucción válida (por ejemplo, "SELECT * FROM NombreTabla WHERE 1=0") y guárdala con el nombre "ConsultaFiltrada". Esto es necesario para que el código VBA pueda abrir la consulta filtrada más adelante.

Con esta solución, cuando el usuario marque opciones en los cuadros de lista y haga clic en el botón de comando, se generará una consulta filtrada en función de las opciones seleccionadas y se abrirá el resultado en una nueva ventana de consulta.

Espero que esta solución te sea útil y te permita generar consultas filtradas fácilmente según las opciones seleccionadas en el formulario. ¡Buena suerte!
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