我在 Windows 的 Access 2010 中遇到了一个问题:
- 使用 doCmd.OpenReport 启动报告
- 在与报告关联的事件中设置“Cancel = True”
- 关闭访问
- Access 继续作为“幻像”进程运行,并且必须在任务管理器中终止。在此进程被终止之前,Access 无法打开另一个数据库。该任务最初显示一些 CPU 使用率,但安静到 0%。
我在使用doCmd.OpenReport启动报告时发现了这一点。报表在Report_Open事件中打开一个表单。该表格提示用户输入报告参数并允许他们按“确定”以显示报告或按“取消”。“Cancel”的On Click事件设置“Cancel = True”。
看来OpenReport()没有优雅地响应取消。这似乎是一种经常使用的技术,所以我犹豫将其称为错误,并想知道我是否做错了什么。实际上......我解释得越多,它听起来确实像一个错误。在这一点上,我希望有人有解决方法,或者我遗漏了一些明显的东西。
这只是我为说明问题而创建的一个简化示例:
形式
Private Sub Form_Open(Cancel As Integer)
On Error GoTo errHandler
DoCmd.OpenReport "Test Report", acViewPreview, , , acDialog
Exit Sub
errHandler:
Select Case Err.Number
Case 2501 ' Cancelled by user, or by NoData event.
MsgBox "Report cancelled, or no matching data.", vbInformation, "Information"
Case Else
MsgBox "Error " & Err & ": " & Error$, vbInformation, "Form_Open()"
End Select
Resume Next
End Sub
报告
Private Sub Report_Open(Cancel As Integer)
Cancel = True
End Sub