• The basic problem is that you're bringing all the records into Access and then applying the date filter. I would suggest using a pass-thru query, following these steps. . .

    -- create a stored procedure like this

    CREATE PROC prcTest

    (

    @StartDate datetime,

    @EndDate datetime

    )

    AS

    SELECT ManHoursPerDistrictPerMonth.District, Sum(ManHoursPerDistrictPerMonth.SumReg) AS SumOfSumReg, Sum(ManHoursPerDistrictPerMonth.SumOT) AS SumOfSumOT

    FROM ManHoursPerDistrictPerMonth

    WHERE (((ManHoursPerDistrictPerMonth.InvYear)=Year(@StartDate)) AND ((ManHoursPerDistrictPerMonth.InvMonth)>=Month(@StartDate) And (ManHoursPerDistrictPerMonth.InvMonth)<=Month(@EndDate)))

    GROUP BY ManHoursPerDistrictPerMonth.District

    UNION SELECT "zTotal" AS District, Sum(ManHoursPerDistrictPerMonth.SumReg) AS SumOfSumReg, Sum(ManHoursPerDistrictPerMonth.SumOT) AS SumOfSumOT

    FROM ManHoursPerDistrictPerMonth

    WHERE (((ManHoursPerDistrictPerMonth.InvYear)=Year(@StartDate)) AND ((ManHoursPerDistrictPerMonth.InvMonth)>=Month(@StartDate) And (ManHoursPerDistrictPerMonth.InvMonth)<=Month(@EndDate)))

    GO

    note that I took your Access query, replaced the two date functions with parameters, and also removed the semicolon at the end of the first half of the query.

    Then in Access, run these statements in the Immediate Window (Alt-F11, then Ctrl-G:

    ' do this from the Immediate Window

    CurrentDb.CreateQueryDef ("qryTest")

    CurrentDb.QueryDefs("qryTest").Connect = CurrentDb.TableDefs("one of your linked tables").Connect

    CurrentDb.QueryDefs("qryTest").sql = "prcTest '',''"

    Change your report to use qryTest as the data source.

    Finally, in the button Click() event that opens the report, add this before you DoCmd.OpenReport

    ' do this in the button Click() event

    CurrentDb.QueryDefs("qryTest").sql = "prcTest '" & Format(getStartdate(), "mm/dd/yyyy") & "', '" & Format(getEndDate(), "mm/dd/yyyy") & "' "