子窗体内的MS Access参数查询将无法打印

时间:2012-05-03 14:49:58

标签: ms-access ms-access-2010

这就是我所做的:

我创建了一个参数查询,其中一个crtiterias位于[开始日期]和[结束日期]之间。然后我将参数查询与其他绑定字段一起放入并创建子表单。到目前为止,没有问题,而且效果很好。

但在打印或尝试将表单转换为PDF时,我遇到了问题。例如,当我要求它打印时,弹出的参数查询弹出窗口会再次询问我日期,甚至在我再次输入它们之后,它会一直问我多次并取消打印作业。

当我尝试打印屏幕上的内容时,如何保持查询基本不运行?如果我正在尝试创建PDF,也会发生同样的事情。

1 个答案:

答案 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属性。