Access Labels Report 中标签的数量和位置在打印预览中正确,但在打印或导出中不正确

Posted

技术标签:

【中文标题】Access Labels Report 中标签的数量和位置在打印预览中正确,但在打印或导出中不正确【英文标题】:Number and position of labels in Access Labels Report on current record correct in Print Preview but not in Print or Export 【发布时间】:2017-04-18 00:07:59 【问题描述】:

我尝试从当前记录的子表单创建标签报告。下面是基本的潜艇。

表单按钮背后的代码

Private Sub btnBlueLabels_Click()
Dim strWhere As String
Dim strDocName As String
strDocName = "rptBlueLabels"
strWhere = "AllocationAlphaName = """ & Me.frmSubAllocations.Form!AllocationAlphaName & """ AND AdvanceAllocationID = """ & Me.frmSubAllocations.Form!AdvanceAllocationID & """"
If IsNull(Me.frmSubAllocations.Form!AllocationLongName) Then
    MsgBox "No allocation records for this entity. The report will now close."
    Exit Sub
Else
    DoCmd.OpenReport strDocName, acViewPreview, , strWhere, acDialog

End If End Sub

报告背后的代码

 Sub BDetailOnFormat(rpt As Report)
'Print a specified number of blank detail sections.
If intSkipPosition <> 0 Then
        rpt.MoveLayout = True
        rpt.NextRecord = False
        rpt.PrintSection = False
        intSkipPosition = intSkipPosition - 1
    End If End Sub


Sub BDetailOnPrint(rpt As Report)
       If intCopiesCout < intCopies Then
        rpt.NextRecord = False
        intCopiesCout = intCopiesCout + 1

    End If
End Sub

在打印预览中,一切看起来都不错。

in the picture: print preview pop up window - three of used labels skipped and three same labels needs to be printed

当我尝试打印打印预览时,它只打印一个标签(不是三个),并且它位于页面的顶部和左侧。

Print output

拜托,我在征求意见! 谢谢。

【问题讨论】:

如果不先在 PrintPreview 中打开就直接打印到打印机会怎样? 它跳过了三个正确的使用标签,但它不打印当前记录。它从记录源表中获取记录。 只有这些记录中的第一个 - 三个,其余的一个。 你在哪里调用这两个报告程序?如果您想提供 db 进行分析,我推荐 Box.com 文件共享站点并发布文件链接。 app.box.com/s/k3tuu6cad4as3r4owjfzuyybmyvobtng 【参考方案1】:

将提示输入框设置公共变量的代码移到 OpenReport 行之前的表单过程中,而不是报表 Open 过程中。将模块标题中的 3 个变量声明为 Global 并且可用于表单过程。 (我的偏好是输入 Skip 和 Copies 值的文本框,然后表单代码设置全局变量的起始值。使用文本框验证属性。)在表单中进行验证,因此如果输入无效,甚至不要调用报告。实际上,将这段代码放入一个可以被两个按钮调用的 Sub 中。当前在按钮中的代码可以合并到这个 Sub 中。

这可以直接打印到打印机。但 PrintPreview 到打印机不会,因为报告事件不会再次运行。这是一个非此即彼的情况 - 无论是屏幕还是打印机,都不能同时做。

无论是屏幕还是打印机,报表记录集都被正确过滤。

其他说明:

多个模块中缺少Option Explicit

BlueLabels 和 WhiteLabels 模块实际上是相同的。为什么不是 1 个通用模块?它们没有显示在导航窗格中。必须创建新模块(合并)并删除旧模块。

WhiteLabels Sub WDetailOnPrint 过程缺少 On Error 语句。

If Then 结构中的Exit Sub 行不是必需的。 实际上,阻止了Exit_Procedure: 代码的执行。 此代码有Set Warnings True。为什么?警告永远不会设置为假。

RedLabelSecond 文本框显示“无效控制源”错误,必须重新选择该字段才能清除该错误。

【讨论】:

亲爱的 June7,我无法表达我的感激之情!我解决了代码中的所有问题,您推荐。 我可以在不打开报表的情况下打印标签。我用 DoCmd.OpenReport strDocName, acNormal, , strWhere 非常感谢。 如果答案提供了已解决的问题,最好将其标记为已接受。很高兴您现在可以使用它。

以上是关于Access Labels Report 中标签的数量和位置在打印预览中正确,但在打印或导出中不正确的主要内容,如果未能解决你的问题,请参考以下文章

javascript如何统计页面中标签的数量

material UI - 如何更改 FormControlLabel 中标签的字体大小

CustomUITableView 中标签的文本没有改变

swift中标签的页面控制

更改 DOM 中标签的位置

以编程方式更改集合视图单元格中标签的字体