将参数传递给 Access 2010 中的多个查询?

Pass parameters to multiple queries in Access 2010?

我有两个查询都提示用户输入开始日期和结束日期。我想将这些查询打包到一份报告(或类似的报告)中,以便用户只需按下仪表板上的一个按钮,它就会提示他们输入一次开始 date/end 日期(将其传递给两个查询),然后打印查询结果。这可能吗?我一直在阅读报告、表格和宏。我想我只是开始混淆自己。

这是一种方法:

创建一个像“MyParameter”这样的全局变量和一个像这样的全局函数:

Public Function GetMyParameter() as [whatever type your parameter is]
  GetMyParameter = MyParameter
End Function

在查询中使用GetMyParameter()作为参数,在按钮的点击事件中使用:

MyParameter = [Whatever value you want to assign to Parameter]
DoCmd.OpenQuery "Query1"
DoCmd.OpenQuery "Query2"

对于开始日期和结束日期,您需要两个参数。您可以将它们称为 GlobalStartDate 和 GlobalEndDate,对应的函数可以是 GetGlobalStartDate 和 GetGlobalEndDate。然后你的查询条件可以使用类似 BETWEEN GetGlobalStartDate() AND GetGlobalEndDate()

我更喜欢使用 TempVars 来设置在多个查询中使用的值。

您可以通过 VBA 或使用宏分配一个 TempVar。您可以在查询中引用 TempVars。

在查询中使用 TempVar:

SELECT Something
FROM MyTable
WHERE MyTable.StartDate > TempVars!StartDate

使用宏设置 TempVar:

使用 VBA 设置 TempVar:

Public Sub SetTempvar()
    TempVars!StartDate = #01-01-2001#
End Sub

如果这是在报表中,您可以从与报表绑定的查询中省略过滤器,而是使用报表过滤器。

如果您将报表作为子报表对象放在窗体上,那么您可以让 StartDateEndDate 参数成为父窗体上的日期选择器。然后,您可以使用 Link Master/Child Fields 将它们绑定到子报告,或者您可以构建更精细的过滤器,并在每次 Start/End 日期控件更新时将该过滤器应用于子报告。