Access - filtrar un informe con combobox

 
Vista:

filtrar un informe con combobox

Publicado por Victor (101 intervenciones) el 12/04/2007 02:00:54
Como filtro un informe que no este relacionado a una consulta mediante combobox?

Tengo un formulario que tiene dos combobox

el primero me despliega una lista de 4 opciones, delas cuales escojo una (logico).

El segundo me despliega años, desde 1990 hasta 2999, y escojo uno.

Quiero que al dar click en un boton de comando llamado Informe, me despliegue un informe con los registros de la opcion que escogi y el año que escogi en el segundo.

osea que el informe tendra la informacion de una empresa y el año en que se hicieron los trabajos.

Como puedo hacerlo esto mediante codigo y no por consulta?

Espero puedan ayudarme, 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

Filtrar informe mediante combobox

Publicado por Alejandro (4142 intervenciones) el 08/08/2023 20:20:54
Puedes lograr esto mediante código VBA en el evento Click del botón "Informe" en tu formulario. Aquí tienes un ejemplo de cómo hacerlo:

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
Private Sub btnInforme_Click()
    Dim filtroOpcion As String
    Dim filtroAnio As String
    Dim strFiltro As String
    Dim rpt As Report
 
    ' Obtener el valor seleccionado en el primer combobox
    filtroOpcion = Me.cmbOpcion.Value
 
    ' Obtener el valor seleccionado en el segundo combobox
    filtroAnio = Me.cmbAnio.Value
 
    ' Crear el filtro para el informe
    If filtroOpcion <> "" And filtroAnio <> "" Then
        strFiltro = "[CampoOpcion] = '" & filtroOpcion & "' AND [CampoAnio] = " & filtroAnio
    ElseIf filtroOpcion <> "" Then
        strFiltro = "[CampoOpcion] = '" & filtroOpcion & "'"
    ElseIf filtroAnio <> "" Then
        strFiltro = "[CampoAnio] = " & filtroAnio
    Else
        ' Mostrar mensaje si no se seleccionó ningún filtro
        MsgBox "Selecciona al menos una opción de filtro.", vbExclamation, "Filtro"
        Exit Sub
    End If
 
    ' Abrir el informe con el filtro aplicado
    DoCmd.OpenReport "NombreDelInforme", acViewPreview, , strFiltro
 
    ' Obtener referencia al informe abierto
    Set rpt = Reports("NombreDelInforme")
 
    ' Asignar el filtro al informe (puede omitirse si el informe ya está filtrado)
    rpt.Filter = strFiltro
    rpt.FilterOn = True
End Sub

Asegúrate de reemplazar "NombreDelInforme" con el nombre real de tu informe y ajusta los nombres de los campos y combobox según tu base de datos.

Este código crea un filtro basado en las selecciones de los combobox y lo aplica al informe al abrirlo. Si el informe ya está abierto, también asigna el filtro directamente al informe.
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