将参数传递给 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
如果这是在报表中,您可以从与报表绑定的查询中省略过滤器,而是使用报表过滤器。
如果您将报表作为子报表对象放在窗体上,那么您可以让 StartDate
和 EndDate
参数成为父窗体上的日期选择器。然后,您可以使用 Link Master/Child Fields
将它们绑定到子报告,或者您可以构建更精细的过滤器,并在每次 Start/End 日期控件更新时将该过滤器应用于子报告。
我有两个查询都提示用户输入开始日期和结束日期。我想将这些查询打包到一份报告(或类似的报告)中,以便用户只需按下仪表板上的一个按钮,它就会提示他们输入一次开始 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
如果这是在报表中,您可以从与报表绑定的查询中省略过滤器,而是使用报表过滤器。
如果您将报表作为子报表对象放在窗体上,那么您可以让 StartDate
和 EndDate
参数成为父窗体上的日期选择器。然后,您可以使用 Link Master/Child Fields
将它们绑定到子报告,或者您可以构建更精细的过滤器,并在每次 Start/End 日期控件更新时将该过滤器应用于子报告。