gpt4 book ai didi

vba - MS Access - 通过取消报告创建的 "phantom"进程

转载 作者:行者123 更新时间:2023-12-04 15:47:59 27 4
gpt4 key购买 nike

我在 Access 2010 for Windows 中遇到了一个问题:

  • 使用 doCmd.OpenReport
  • 启动报告
  • 在与报告关联的事件中设置“Cancel = True”
  • 关闭 Access
  • Access 继续作为“幻影”进程运行,必须在任务管理器中终止。在此进程被终止之前,Access 无法打开另一个数据库。该任务最初显示一些 CPU 利用率,但安静下来到 0%。

  • 我在使用 doCmd.OpenReport 启动报告时发现了这一点。报表在 Report_Open 事件中打开一个窗体。该表单会提示用户输入报告参数,并允许他们按“确定”以显示报告或按“取消”。 “取消”的点击事件设置“取消 = 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

    最佳答案

    这种情况下出现问题的原因是acDialog:

     DoCmd.OpenReport "Test Report", acViewPreview, , , acDialog

    我想你会发现:
     DoCmd.OpenReport "Test Report", acViewPreview

    工作没有问题。

    编辑重新评论

    您应该不需要取消报告。在大多数情况下,避免错误比捕获错误要好,因此在打开表单之前检查数据并获取参数。将表单从报表打开事件移动到它自己的步骤,并在启动表单之前使用 DLookUp 或查询来检查数据。

    关于vba - MS Access - 通过取消报告创建的 "phantom"进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14106730/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com