Access - Consulta por formulario en access

 
Vista:

Consulta por formulario en access

Publicado por Luis (1 intervención) el 26/09/2006 20:29:14
Hola
Estoy realizando en access una consulta por formulario (qbf) sobre una única tabla y sobre 2 campos (columnas) posibles.

La formulario que he hecho realiza consultas sobre cualquiera de los campos (incluso aunque uno de los campos esté vacío).. Pero quiero ampliar la consulta por formulario en el siguiente aspecto:

- permitir que se puedan introducir más criterios de búsqueda en ambos campos. Por ejemplo quiero encontrar clientes de madrid, valencia y segovia (campo ciudad) a quienes les sirva material diferentes comerciales: comercial1 comercial2 y comercial 3 (campo comerciales)
Quiero hacer un formulario donde puedan introducirse hasta 7 criterios (ciudades y comerciales) diferentes, aunque no se utilizen los 7.

Alguien me podría indicar cómo hacerlo?

Muchísimas gracias.

Un saludo
Luis
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 avanzada por formulario con múltiples criterios de búsqueda

Publicado por Alejandro (4142 intervenciones) el 26/07/2023 00:10:30
Para permitir la introducción de hasta 7 criterios diferentes (ciudades y comerciales) en un formulario y realizar una consulta avanzada sobre una única tabla con esos criterios, puedes seguir estos pasos:

1. Diseñar el formulario:

a. Abre Access y crea un nuevo formulario en vista de diseño.
b. Agrega 7 cajas de texto (o controles de tu preferencia) para que los usuarios puedan ingresar los criterios de búsqueda.
c. Etiqueta cada caja de texto para indicar qué criterio representa (por ejemplo, Ciudad1, Ciudad2, Comercial1, Comercial2, etc.).

2. Diseñar el botón de búsqueda:

a. Agrega un botón al formulario para realizar la consulta.
b. Haz doble clic en el botón para abrir el editor de VBA.
c. En el evento "Al hacer clic" del botón, escribe el siguiente código:

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
32
33
34
35
36
37
38
Private Sub btnBuscar_Click()
    Dim strFiltro As String
    Dim strCiudad As String
    Dim strComercial As String
 
    ' Inicializar el filtro como una cadena vacía
    strFiltro = ""
 
    ' Construir el filtro basado en los criterios de búsqueda ingresados
    For i = 1 To 7
        strCiudad = Nz(Me("Ciudad" & i).Value, "")
        strComercial = Nz(Me("Comercial" & i).Value, "")
 
        If strCiudad <> "" And strComercial <> "" Then
            strFiltro = strFiltro & "(Ciudad = '" & strCiudad & "' AND Comercial = '" & strComercial & "') OR "
        ElseIf strCiudad <> "" Then
            strFiltro = strFiltro & "(Ciudad = '" & strCiudad & "') OR "
        ElseIf strComercial <> "" Then
            strFiltro = strFiltro & "(Comercial = '" & strComercial & "') OR "
        End If
    Next i
 
    ' Eliminar el último "OR" innecesario del filtro
    If strFiltro <> "" Then
        strFiltro = Left(strFiltro, Len(strFiltro) - 4)
    End If
 
    ' Ejecutar la consulta utilizando el filtro
    If strFiltro <> "" Then
        Me.RecordSource = "SELECT * FROM NombreTabla WHERE " & strFiltro
    Else
        ' Si no se ingresaron criterios de búsqueda, mostrar todos los registros
        Me.RecordSource = "SELECT * FROM NombreTabla"
    End If
 
    ' Actualizar el formulario con los resultados de la consulta
    Me.Requery
End Sub

3. Asegúrate de reemplazar "NombreTabla" en el código anterior con el nombre real de la tabla que estás consultando.

Con este código, al hacer clic en el botón de búsqueda, se construirá un filtro dinámico basado en los criterios de búsqueda ingresados en las cajas de texto del formulario. La consulta utilizará el filtro para recuperar los registros que coincidan con esos criterios y actualizará el formulario para mostrar solo los resultados relevantes.

Ahora, los usuarios podrán ingresar hasta 7 criterios diferentes en el formulario, y la consulta se adaptará para filtrar los resultados según los criterios seleccionados. Si alguno de los campos de búsqueda se deja en blanco, la consulta aún funcionará adecuadamente y devolverá resultados basados en los criterios proporcionados.
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