子窗体内的 MS Access 参数查询不会打印

Posted

技术标签:

【中文标题】子窗体内的 MS Access 参数查询不会打印【英文标题】:MS Access Parameter Query inside Subform Won't Print 【发布时间】:2012-05-03 14:49:57 【问题描述】:

这是我所做的:

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

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

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

【问题讨论】:

【参考方案1】:

在我看来,参数在 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 属性。

【讨论】:

感谢您的回复。我查看了您提供的链接,但我有点不清楚这会做什么以及我将在哪里实施它。我对实现后端解决方案不太熟悉。你能解释一下吗?谢谢!

以上是关于子窗体内的 MS Access 参数查询不会打印的主要内容,如果未能解决你的问题,请参考以下文章

Vue 打印子组件props的值

子窗体不会随着动态添加的新数据而更新

Ms Access中更新主窗体时更新子窗体的相关字段

MS Access,如何将参数传递给子查询?

如何遍历所有子窗体 MS Access VBA

MS Access 2003/2007 - 子窗体作为控制面板,关闭父窗体与全局类似参考?