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

时间:2018-03-23 15:09:38

标签: ms-access ms-access-2010

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

3 个答案:

答案 0 :(得分:1)

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

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

在查询中使用TempVar:

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

使用宏设置TempVar:

enter image description here

使用VBA设置TempVar:

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

答案 1 :(得分:1)

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

如果您将报表作为子报表对象放在表单上,​​那么您可以在父表单上将StartDateEndDate参数作为日期选择器。然后,您可以使用Link Master/Child Fields将它们绑定到子报表,也可以构建更精细的过滤器,并在每次更新“开始/结束日期”控件时将该过滤器应用于子报表。

答案 2 :(得分:0)

这是一种方法:

创建一个像`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()

的内容