从窗体打印子报表(Access 2016)

从窗体打印子报表(Access 2016)

问题描述:

我有一个带有选项卡控件的父窗体,每个窗体都有一个报表。我正在尝试在我的主窗体上放置一个命令按钮,以便在活动选项卡上打印报告。我强烈地试图避免在每个报告上放置“打印”按钮。 到目前为止,我已经做了以下内容:从窗体打印子报表(Access 2016)

1.I我使用这行代码来打开打印预览所选报告:

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  
    

    并且每次选择活动报告。

  2. 我的问题是与灰暗和设置..我不熟悉它们,似乎任何组合我尝试,我得到一个“所需的对象”的错误,或者或运行时错误“2465” :找不到字段“myexp”。

    预先感谢您

开始=“3”>

这可能是:

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

非常感谢您!古斯塔夫这非常简单..!如果其他人有同样的问题,最终的代码是: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',因为第一个总是给我第一页,而不是“可见”。 – aran0ia

+0

太棒了!您可以将最终代码附加到您的问题中,以使其更具可读性。 – Gustav