在我看来,参数在 MS Access 中处理得不好。
我认为每次运行时都必须在查询中输入值(除非它是一次性实验性查询)是错误的。如果您可以只传递参数,那么自动生成这样的报告会容易得多。
通常,我在查询的 where 子句中创建一个不带参数的报告,然后传入您自己的 where 条件,该条件将添加到 Remou's answer here
您还可以在调用之前更改报告中的查询,但这很老套。
-- 编辑--
我看到了混乱。我将您正在做的事情解释为报告(而不是表格)。
可能发生的情况是,当它尝试渲染/格式化打印作业时,它必须多次调用表单的记录源。这就是为什么它一直要求你提供这些数据。
根据我对您问题的理解,您的查询如下所示:
select foo
from bar
where
yaddah_date between [Start Date] and [End Date]
然后,您将该查询用作您尝试稍后打印为 PDF 的表单的记录源。首先,您可能应该创建一个类似于表单的报告。然后打开带有过滤器的报表进行打印:
DoCmd.OpenReport "myReport", , , , _
"yaddah_date between " & txtStartDate & _
" and " & txtEndDate
(最后一部分基本上是 filter/where 子句,报告将应用于生成其数据的查询结果)。
如果你必须打印表格,你可以做类似的事情
DoCmd.OpenForm "foo", acNormal, , _
"yaddah_date between " & txtStartDate & _
" and " & txtEndDate
或者您可以设置表单/子表单的filter 属性。