3

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

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

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

我计划使用的丑陋解决方法(因为缺乏更好的解决方案)是让查询引用表单值。例子 :

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

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

4

1 回答 1

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()

于 2012-11-09T19:42:18.463 回答