为报告输入重复的查询参数

时间:2012-11-09 18:47:00

标签: vba ms-access

我正在构建一个需要多个聚合查询的报告(主要是总和和不同事物的数量)。

我构建了一个主报表,并且包含了包含每个查询的子报表。所有这些查询都有日期范围的参数(将是相同的)。

因此,当我提起报告时,它会询问大约12次相同的参数(开始和结束日期)。什么是这个问题的有效解决方案?

丑陋的解决方法(缺乏更好的解决方案)我打算使用的是让查询引用表单值。例如:

SELECT count(*) FROM tblTests 
WHERE testdate >= [Forms]![formReportParams]![startDate] 
    AND testDate <= [Forms]![frmReportParams]![EndDate]

是否有一个不那么草率的解决方案,允许我的单独子报表的所有查询共享相同的查询参数?

1 个答案:

答案 0 :(得分:1)

您可以为开始日期和结束日期创建单独的函数,并在查询WHERE子句中使用这些函数。

Function GetStartDate(Optional ByVal pReset As Variant) As Date
    Static dteStart As Date
    If Not IsMissing(pReset) Then
        dteStart = pReset
    End If
    GetStartDate = dteStart
End Function

初始化函数的静态日期值,它将作为返回值保留,直到您再次更改它为止。 (但它仅与当前的Access应用程序会话保持一致。)

GetStartDate #2012-01-01#

然后在查询中使用该功能。

SELECT count(*) FROM tblTests 
WHERE testdate >= GetStartDate();

GetEndDate()执行相同操作。