Ms access 当前记录上Access labels报告中标签的数量和位置在打印预览中正确,但在打印或导出中不正确

Ms access 当前记录上Access labels报告中标签的数量和位置在打印预览中正确,但在打印或导出中不正确,ms-access,printing,report,Ms Access,Printing,Report,我尝试从当前记录的子窗体创建标签报告。以下是基本潜艇 表单按钮后面的代码 Private Sub btnBlueLabels_Click() Dim strWhere As String Dim strDocName As String strDocName = "rptBlueLabels" strWhere = "AllocationAlphaName = """ & Me.frmSubAllocations.Form!AllocationAlphaName & """ AN

我尝试从当前记录的子窗体创建标签报告。以下是基本潜艇

表单按钮后面的代码

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
子BDetailOnFormat(rpt作为报告)
'打印指定数量的空白详细信息部分。
如果输入位置为0,则
rpt.MoveLayout=True
rpt.NextRecord=False
rpt.PrintSection=False
intSkipPosition=intSkipPosition-1
如果结束子节点,则结束
子BDetailOnPrint(rpt作为报告)
如果intCopiesCout
在打印预览中,一切看起来都很好

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

求你了,我在征求意见!
谢谢。

将提示输入框设置公共变量的代码移到表单过程的OpenReport行之前,而不是报表打开过程中。将模块头中的3个变量声明为全局变量,可用于表单过程。(我的首选是使用文本框输入跳过和复制值,然后使用表单代码设置全局变量的起始值。使用文本框验证属性。)在表单中进行验证,以便在输入无效时甚至不调用报告。实际上,把这段代码放到一个可以被两个按钮调用的子控件中。按钮中当前的代码可以合并到此子组件中

这项工作直接进入打印机。但“打印预览到打印机”不会,因为报告事件不会再次运行。这是一种非此即彼的情况——要么对屏幕,要么对打印机,两者都不能

无论是使用屏幕还是打印机,报表记录集都已正确筛选

其他说明:

几个模块中缺少显式
选项

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

白标签
Sub-WDetailOnPrint
过程缺少关于错误的
语句

If Then
结构中的
Exit Sub
行是不必要的。 实际上,它阻止执行
Exit\u过程:
code。 此代码已
将警告设置为True
。为什么?警告从不设为假


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

如果不在PrintPreview中首先打开而直接打印到打印机,会发生什么情况?它跳过三个正确使用的标签,但不打印当前记录。它从记录源表中获取记录。只有这些记录中的第一条记录-三条,其余的一条。您在哪里调用这两个报告过程?如果您想提供db进行分析,我建议您访问Box.com文件共享网站并发布文件链接。亲爱的June7,我无法表达我的感激之情!您建议,我解决了代码中的所有问题。我可以在不打开报告的情况下打印标签。我使用DoCmd.OpenReport strDocName,acNormal,strWhere非常感谢。如果提供的答案解决了问题,将很高兴将其标记为接受。很高兴你现在可以用了。