【问题标题】:Print subreport from form (Access 2016)从表单打印子报告 (Access 2016)
【发布时间】:2017-08-29 10:37:38
【问题描述】:

我有一个带有选项卡控件的父表单,每个选项卡都包含一个报告。我正在尝试在我的主窗体上放置一个命令按钮,该按钮将在活动选项卡上打印报告。我极力避免在每份报告上加上“打印”按钮。 到目前为止,我已经完成了以下工作:

1.我正在使用这行代码在打印预览中打开选定的报告:

DoCmd.OpenReport Right(Me!Rpt0.SourceObject, Len(Me!Rpt0.SourceObject) - 7), acViewPreview

它看起来很复杂,因为当您将报表作为子表单时,源对象属性是 Report.MyReport,所以我不得不删除“报表”。部分。

到目前为止一切顺利。

2.我还根据保存它们的选项卡的索引命名了所有保存报告的控件。因此,第 1 页的报告是 Rpt0,第 2 页的报告是 Rpt1,依此类推。

  1. 我正在尝试用如下表达式替换该代码行中的“Rpt0”部分:

    myexp= "Rpt" & Me!TabCtl1.TabIndex
    

    所以上面的代码变成了:

    DoCmd.OpenReport Right(Me!myexp.SourceObject, Len(Me!myexp.SourceObject) - 7), acViewPreview    
    

    并且每次都会选择活动报告。

我的问题是 Dim As 和 Set.. 我不熟悉它们,似乎无论我尝试什么组合我都会收到“需要对象”错误,或者运行时错误“2465”:不能查找字段“myexp”。

提前谢谢你

【问题讨论】:

    标签: ms-access vba ms-access-2016


    【解决方案1】:

    可能是:

    DoCmd.OpenReport Right(Me(myexp).SourceObject, Len(Me(myexp).SourceObject) - 7), acViewPreview    
    

    【讨论】:

    • 非常感谢古斯塔夫!!这非常容易..!如果其他人有同样的问题,最终代码是这样的:Private Sub Print_Report_Click() Dim sbfname As String sbfname = "Rpt" & Me.TabCtl1 DoCmd.OpenReport Right(Me(sbfname).SourceObject, Len(Me(sbfname).SourceObject) - 7), acViewPreview End Sub(如果有人知道如何在此处添加空格,请执行)。我还用Me.Tabctl1 替换了Me!tabctl1.TabIndex,因为第一个总是给我第一页而不是“可见”的。
    • 太棒了!您可以将最终代码附加到您的问题中,使其更具可读性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多