【问题标题】:problems with DoCmd.OpenReportDoCmd.OpenReport 的问题
【发布时间】:2015-12-26 23:54:59
【问题描述】:

我在表单上有一个按钮可以打开报告。只要有数据,报告就会按原样打开,但是当报告中没有数据时,我会收到错误消息,调试器会将我带到这一行
DoCmd.OpenReport "FilesToBeReturnedReport", acViewReport, "", "", acNormal

这是完整的代码:

`With Me
    If ((IsNull(.StartDate) Or .EndDate = "")) Then
        Beep
        MsgBox "You must enter report start period", vbOKOnly, "Required Data!"
    ElseIf (IsNull(.EndDate) Or .EndDate = "") Then
        Beep
        MsgBox "You must enter report end date", vbOKOnly, "Reqired Data"
    ElseIf (.StartDate > .EndDate) Then
        Beep
        MsgBox "The report start date must be earlier than the end date", vbOKOnly, "Required Data"
    Else
        DoCmd.OpenReport "FilesToBeReturnedReport", acViewReport, "", "", acNormal
    End If
End With`

我需要在明天之前完成这项工作,因此我们将不胜感激。谢谢

【问题讨论】:

    标签: ms-access vba


    【解决方案1】:

    Access 报告有一个 NoData 事件。你可以把你想在没有数据的情况下运行的动作放在那里。如果在 NoData 事件中将 Cancel 设置为 True,则报表将不会打开或打印。如果您将 Cancel 保留为默认 False,则报表将像现在一样打开。

    也就是说,您在使用 DoCmd.OpenReport 时还需要捕获此错误:

    On Error Goto ReportFail
    DoCmd.OpenReport strReport, acViewPreview
    
    ExitHere:
    Exit Sub
    
    ReportFail:
    If Err=2501 Then
      'OpenReport was canceled
      Err.Clear
      Resume ExitHere
    Else
      MsgBox Err.Number & ": " & Err.Description
    End If
    End Sub
    

    【讨论】:

    • 大部分是正确的,除了 Err 编号应该是 2501。
    【解决方案2】:

    我对 vba 的访问并不是非常有经验,但你为什么不尝试推杆

    DoCmd.OpenReport "FilesToBeReturnedReport", acViewReport, "", "", acNormal

    之后

    End with
    

    【讨论】:

    • 我刚刚尝试了您的建议,但没有奏效。我所做的是使用“加载时”事件过程来运行记录计数并在 = 0 时关闭。并向用户返回一条消息。尽管如此,还是感谢您的努力。
    • 很抱歉你能修复它@kefash
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    相关资源
    最近更新 更多