2012-05-03 61 views
2

这里是我做了什么:MS Access参数查询将不打印

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

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

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

回答

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 

(最后一部分基本上是过滤器/ where子句该报告将适用于正在生成的数据查询的结果)。

如果必须打印表格,你可以做类似的

DoCmd.OpenForm "foo", acNormal, , _ 
       "yaddah_date between " & txtStartDate & _ 
        " and " & txtEndDate 

的东西,也可以设置窗体/子窗体的filter财产。

+0

谢谢你的回应。我检查了你给出的链接,但我不清楚它会做什么以及在哪里实施。我对实施后端解决方案不太熟悉。你能解释一下吗?谢谢! –