我在表单上有一个按钮,点击它生成我的报告。在该报告的Load
事件中,我试图获得总页数。我需要在我的数据库中使用它们,但每当我尝试Me.Pages
时,我只能在Load事件中得到1。
我尝试使用Current
和Activate
报告事件,但我总是得到总页数1.
任何解决方案?
答案 0 :(得分:1)
访问避免计算Pages
,除非绝对必要,因为这是一项昂贵的操作 - 必须事先格式化整个报告才能获得总页数。
要获得它,您需要在报告标题中使用ControlSource
= =[Pages]
的文本框控件。文本框可以是不可见的。如果您当前没有报告标题,请创建一个 - 它可以有一个很小的高度。
然后,您可以在报告标题的Me.Pages
事件中阅读Format
。但是你仍然需要注意,在我的示例报告中,事件会触发两次,并且只有第二次返回实际的页面。 FormatCount
对我不起作用。
此代码
Private Sub Berichtskopf_Format(Cancel As Integer, FormatCount As Integer)
Debug.Print "Header_Format, FormatCount = " & FormatCount & ": " & Me.Pages
End Sub
Private Sub Report_Load()
Debug.Print "Load: " & Me.Pages
End Sub
给出了这个结果:
Load: 0
Header_Format, FormatCount = 1: 0
Header_Format, FormatCount = 1: 65
65是正确的数字。
答案 1 :(得分:0)
“我的表单”具有打印按钮,一旦按下该按钮,就会出现有关报告中页数的警告...,用户可以选择是或否进行打印。
您可以使用Reports(stDocName).Pages
或DCount
方法对页面进行汇总...
我使用了前一种方法。:(确保报告中有一个文本框,其中前一种方法的控件属性设置为=Pages
。
Private Sub cmdPrint2_Click()
Dim stDocName As String
stDocName = "RPT_Purchases2"
DoCmd.OpenReport stDocName, acViewPreview, , , acHidden
Msg ="There are " & Reports(stDocName).Pages & " Pages to be printed." & (Chr(13)_
& Chr(10)) & (Chr(13) & Chr(10)) & "Do you want to continue?"
Style = vbYesNo + vbInformation
Title = "Total Pages ... "
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
DoCmd.OpenReport stDocName, acViewPreview, , , acHidden
DoCmd.PrintOut
MsgBox ("Printing")
Beep
Else
MsgBox ("Print Job Canceled")
End If
Me.Refresh
End Sub