【发布时间】:2016-04-02 16:19:33
【问题描述】:
我有一个表格,可以一个接一个地调用一系列报告。我还有一个用作计数器的全局变量。每次调用页面的 PageFooterSection_Format 时,我都想增加计数。问题是,计数器计数得比它应该的要高。这是我的代码:
我有一个名为 genericFunctions 的模块:
Option Compare Database
Public pageCount As Integer
在我的表单中,我有一个循环调用:
'before loop
pageCount = 1
'start loop, which I left out for brevity
'run in previewView first so page footer format function is called
DoCmd.OpenReport reportName, acViewPreview, , , acHidden, !ID
'then run this to open in report view, so onload event runs
DoCmd.OpenReport reportName, acViewReport, , , acHidden, !ID
'save report as a pdf
DoCmd.OutputTo acOutputReport, reportName, "PDF", rptPath
'close report
DoCmd.Close acReport, reportName
'I then have a method that "stitches" these individual reports into one PDF
现在,在我的报告中,我有以下代码:
Private Sub PageFooterSection_Format(Cancel As Integer, FormatCount As Integer)
If (Report.CurrentView = 5) Then
'a textbox in the report
Me.pgNumber.Value = pageCount
pageCount = pageCount + 1
End If
End Sub
然后我在事件中放置一个断点。这个事件应该被命中 3 次。所以,我希望 pgNumber 文本框有 1,2,3 作为它们的值,但它有 2,4,6。在我的代码中没有其他地方我增加了 pageCount 变量。这是怎么回事?这是范围问题吗?
【问题讨论】:
-
pagecount 变量显示什么?
-
@JapanDave 显示和文本框一样,计数为 2,4,6。这可能是因为我先在 acPreview 中打开报告,然后在 acReportView 中打开报告吗?即使仅在调用 acPreview 时触发 Format 事件?
-
单步执行代码怎么样?好像是在函数里跑了两次???
-
你能在表单模块中提供一个完整的代码块,以便我们可以看到这个循环吗?此外,报表的打印预览应该运行 OnLoad 事件,无需隐藏。
标签: ms-access vba ms-access-2007