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 中标签的数量和位置在打印预览中正确,但在打印或导出中不正确的主要内容,如果未能解决你的问题,请参考以下文章