这就是我所做的:
我创建了一个参数查询,其中一个crtiterias位于[开始日期]和[结束日期]之间。然后我将参数查询与其他绑定字段一起放入并创建子表单。到目前为止,没有问题,而且效果很好。
但在打印或尝试将表单转换为PDF时,我遇到了问题。例如,当我要求它打印时,弹出的参数查询弹出窗口会再次询问我日期,甚至在我再次输入它们之后,它会一直问我多次并取消打印作业。
当我尝试打印屏幕上的内容时,如何保持查询基本不运行?如果我正在尝试创建PDF,也会发生同样的事情。
答案 0 :(得分:1)
在我不那么谦虚的意见中,参数在MS Access中处理不当。
我认为必须在运行时输入查询中的值(除非它是一次性的实验性查询)才是错误的。如果您只是传递参数,那么自动化报告就会容易得多。
通常,我在查询的where子句中创建一个没有参数的报表,然后传入您自己的Remou's answer here
上添加的where条件您也可以在调用之前更改报表中的查询,但这非常hackey。
- 编辑 -
我看到了混乱。我将您正在做的事情解释为报告(而非表格)。
当您尝试渲染/格式化打印作业时,可能会发生这种情况,它必须多次调用表单的记录源。这就是为什么它一直要求你提供这些数据。
根据我在您的问题中的理解,您有一个如下所示的查询:
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
属性。