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

标签 vba ms-access

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

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

因此,当我调出报告时,它会针对相同的参数(开始日期和结束日期)询问大约 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/

相关文章:

delphi - 在 Delphi 中获取记录数据到类中

sql - 如何将所有记录的空白(null)值替换为 0?

sql - Ms Access 从子数据表收集数据

excel - 计算列中的值并放入新列

excel - 以编程方式列出 Excel VBA 用户窗体事件过程

VBA 网页抓取 : macro stops when I run it but not in debugging mode

excel - 查找连续数据所花费的时间

ms-access - Showplan.out 在安装了 MS-Access 2003 和多个版本的 Office 的 Windows 7 中?

sql - “Syntax error in INSERT INTO statement”错误-什么是错误?

vba - 编辑 SQL 查询