Informe Gráfico con Datos Filtrados
Deseo crear un informe que refleje Gráficos con datos filtrados de un formulario.
Con el siguiente código (que veo que esta como complicado).
Option Compare Database
Option Explicit
Enum Propuestas Period Enum
ByMonth = 1
ByQuarter = 2
ByYear = 3
End Enum
Sub Print Reports(Report View As AcView)
Dim str Report Name As String
Dim str Report Filter As String
Dim str Report Filter1 As String
Dim l Propuestas Count As Long
If Nz(Me.lstReportFilter) <> "" Then
strReportFilter = "([PropuestasGroupingField] = """ & Me.lstReportFilter & """)"
End If
If Nz(Me.lst Report Filter1) <> "" Then
strReportFilter1 = "([PropuestasGroupingField1] = """ & Me.lstReportFilter1 & """)"
End If
Select Case Me.lst Propuestas Period
Case By Year
str Report Name = "Informe de Propuestas anuales"
l Propuestas Count = DCountWrapper("*", "Análisis de Propuestas", "[Año]=" & Me.cbYear)
Case By Quarter
str Report Name = "Informe de Propuestas trimestrales"
l Propuestas Count = DCountWrapper("*", "Análisis de Propuestas", "[Año]=" & Me.cbYear & " AND [Trimestre]=" & Me.cbQuarter)
Case By Month
str Report Name = "Informe de Propuestas mensuales"
l Propuestas Count = DCountWrapper("*", "Análisis de Propuestas", "[Año]=" & Me.cbYear & " AND [Mes]=" & Me.cbMonth)
End Select
If l Propuestas Count > 0 Then
TempVars.Add "Agrupar por", Me.lst Propuestas Reports.Value
TempVars.Add "Agrupar por", Me.lst Propuestas Reports1.Value
TempVars.Add "Mostrar", DLookupStringWrapper("[Mostrar]", "Informes de Propuestas", "[Agrupar por]='" & Nz(Me.lst Propuestas Reports) & "'")
TempVars.Add "Mostrar", DLookupStringWrapper("[Mostrar]", "Informes de Propuestas", "[Agrupar por]='" & Nz(Me.lstPropuestasReports1) & "'")
TempVars.Add "Año", Me.cb Year.Value
TempVars.Add "Trimestre", Me.cb Quarter.Value
TempVars.Add "Mes", Me.cb Month.Value
DoCmd.OpenReport strReportName, ReportView, , strReportFilter, acWindowNormal
DoCmd.OpenReport strReportName, ReportView, , strReportFilter1, acWindowNormal
Else
Msg Box OK Only No Propuestas In Period
End If
End Sub
Private Sub Form_Load()
Set Propuestas Period By Year
Init Filter Items
Init Filter Items1
End Sub
Sub SetPropuestasPeriod(PropuestasPeriod As PropuestasPeriodEnum)
Me.lstPropuestasPeriod = PropuestasPeriod
Me.cbQuarter.Enabled = (PropuestasPeriod = ByQuarter)
Me.cbMonth.Enabled = (PropuestasPeriod = ByMonth)
End Sub
Private Sub lstPropuestasPeriod_AfterUpdate()
SetPropuestasPeriod Me.lstPropuestasPeriod
End Sub
Private Sub lstPropuestasReports_AfterUpdate()
InitFilterItems
End Sub
Private Sub lstPropuestasReports1_AfterUpdate()
InitFilterItems1
End Sub
Private Sub InitFilterItems()
Me.lstReportFilter.RowSource = DLookupStringWrapper("[Origen de fila de filtro]", "Informes de Propuestas", "[Agrupar por]='" & Nz(Me.lstPropuestasReports) & "'")
Me.lstReportFilter = Null
End Sub
Private Sub InitFilterItems1()
Me.lstReportFilter1.RowSource = DLookupStringWrapper("[Origen de fila de filtro]", "Informes de Propuestas", "[Agrupar por]='" & Nz(Me.lstPropuestasReports1) & "'")
Me.lstReportFilter1 = Null
End Sub
Private Sub cmdPreview_Click()
PrintReports acViewReport
End Sub
Private Sub cmdPrint_Click()
PrintReports acViewNormal
End Sub
Private Function GetLastPropuestasDate() As Date
GetLastPropuestasDate = Nz(DMaxWrapper("[Fecha de Entrega Cliente]", "Propuestas"), Date)
End Function
Si existe una manera más fácil o un procedimiento más sencillo, les agradecería me ayudaran.
Las Gráficas deberían ser tipo torta con los siguientes campo filtrados, por ejemplo:
- Aprobadas por Usuario (mensuales)
- Aprobadas por Usuario (en BsF y en USD)
O cualquier otra combinación que realice con los filtros.