【问题标题】:Access report prints too many pages with filter applied访问报告打印了太多页面并应用了过滤器
【发布时间】:2015-06-15 19:50:21
【问题描述】:

我在 Access 2007 表单中有一个按钮,其 on click VBA 代码如下:

Private Sub Command53_Click()
    DoCmd.OpenReport "BolLSW", acViewNormal, , "[bolnum] = '" & [bolnum] & "'"
End Sub

基本上,这将打开一个报告(基于您在按下按钮时为 bolnum 输入的数字),该报告与表单具有相同的信息,然后打印它。但是,当报告打印时,它会打印所有记录,而不仅仅是输入的记录。

有没有办法指定只打印所需的记录?

澄清一下:Bolnum 是表单中一个自动递增的唯一字段。单击“生成 BoL”会提示您输入要打印的 Bolnum 的对话框。输入 2 后,记录 1 和 2 都会打印。

【问题讨论】:

  • 表单和报表的记录源相同。这是一个名为“BoL”的表

标签: ms-access vba


【解决方案1】:

我会尝试给 [bolnum](在 2 & 之间,即变量 )一个不同的名称。我猜 Access 正在获取当前行的值 - 所以 where 子句总是正确的。

【讨论】:

  • 尝试无效。 [bolnum] 不是变量,而是字段中字段的名称。抱歉,如果这没有得到澄清。
  • 如果在Form中,则可以在字段名前指定Form
  • 我对如何指定表单名称和位置有点模糊。通常我只是做一个标准的me.field.value,但尝试用我当前的语法来做这件事总是会抛出错误。如何以及在哪里指定表单?
  • 请尝试 [Forms]![YourFormName]![bolnum] 。请注意,这仅在表单打开时才有效...
【解决方案2】:

我已经通过删除

中的一些引号解决了这个问题

DoCmd.OpenReport "BolLSW", acViewNormal, , "[bolnum] = '" & [bolnum] & "'"

具体来说:

删除

>'<" & [bolnum] >& "'"<

导致:

DoCmd.OpenReport "BolLSW", acViewNormal, 1, "[bolnum] = " & [bolnum]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多