我目前正在构建一个需要多个聚合查询(主要是不同事物的总和和计数)的报告。
我构建了一个主报表,并有包含每个单独查询的子报表。所有这些查询都有一个日期范围的参数(它们将是相同的)。
因此,当我调出报告时,它会针对相同的参数(开始日期和结束日期)询问大约 12 次。什么是解决这个问题的有效方法?
我计划使用的丑陋解决方法(由于缺乏更好的解决方案)是让查询引用表单值。示例:
SELECT count(*) FROM tblTests
WHERE testdate >= [Forms]![formReportParams]![startDate]
AND testDate <= [Forms]![frmReportParams]![EndDate]
是否有更简单的解决方案允许我的单独子报表的所有查询共享相同的查询参数?
最佳答案
您可以为开始日期和结束日期创建单独的函数,并在查询 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 应用程序 session 中保留。)
GetStartDate #2012-01-01#
然后在您的查询中使用该函数。
SELECT count(*) FROM tblTests
WHERE testdate >= GetStartDate();
对 GetEndDate()
做同样的事情。
关于vba - 为报告输入重复的查询参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13314088/