我在Access 2010 for Windows中遇到问题:
我在使用doCmd.OpenReport启动报告时发现了这一点.该报告在Report_Open事件中打开一个表单.表单提示用户输入报告参数,并允许他们按"确定"显示报告或按"取消".该Click上的"取消"事件设置"取消=真".
似乎OpenReport()没有正常响应取消.这似乎是一种经常使用的技术,所以我不敢称之为一个错误,我想知道我是否做错了什么.实际上......我解释的越多,听起来就像一个bug.在这一点上,我希望有人有一个解决方法或我错过了一些明显的东西.
这只是我创建的一个简化示例来说明问题:
形成
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
Run Code Online (Sandbox Code Playgroud)
报告
Private Sub Report_Open(Cancel As Integer)
Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)
这种情况下出现问题的原因是acDialog:
DoCmd.OpenReport "Test Report", acViewPreview, , , acDialog
Run Code Online (Sandbox Code Playgroud)
我想你会发现:
DoCmd.OpenReport "Test Report", acViewPreview
Run Code Online (Sandbox Code Playgroud)
工作没有问题。
编辑重新评论
您应该不需要取消报告。在大多数情况下,避免错误比捕获错误要好,因此在打开表单之前检查数据并获取参数。将表单从报表打开事件移动到它自己的步骤,并在启动表单之前使用 DLookUp 或查询来检查数据。