我正在构建一个需要多个聚合查询的报告(主要是总和和不同事物的数量)。
我构建了一个主报表,并且包含了包含每个查询的子报表。所有这些查询都有日期范围的参数(将是相同的)。
因此,当我提起报告时,它会询问大约12次相同的参数(开始和结束日期)。什么是这个问题的有效解决方案?
丑陋的解决方法(缺乏更好的解决方案)我打算使用的是让查询引用表单值。例如:
SELECT count(*) FROM tblTests
WHERE testdate >= [Forms]![formReportParams]![startDate]
AND testDate <= [Forms]![frmReportParams]![EndDate]
是否有一个不那么草率的解决方案,允许我的单独子报表的所有查询共享相同的查询参数?
答案 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()
执行相同操作。