代码之家  ›  专栏  ›  技术社区  ›  unsafe_where_true

访问:取消报告生成导致错误2501

  •  1
  • unsafe_where_true  · 技术社区  · 16 年前

    真不敢相信我在这件事上浪费了这么多时间。

    我有一个订单,当我点击“报告”按钮时,会出现一个对话框

    在其中一个报告中,有一个未绑定的文本框,我需要用户使用它输入数据。

    “运行时错误2501:操作OpenReport已取消”(德语翻译)。

    DoCmd.OpenReport vBerichtName, nAnsicht
    End If   
    
    On Error Resume Next
      DoCmd.Close acForm, "F_BerichtDrucken"
    On Error GoTo 0
    

    1) 为什么错误处理不起作用?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Seth Spearman    16 年前

    Sub MyButton_Click
    On Error Goto myError
    
    DoCmd.OpenReport vBerichtName, nAnsicht
    
    
    MyExit:
       Exit Sub
    
    MyError:
       If Err.number = 2501 then goto myExit
       msgbox err.description
       goto myExit
    
    End Sub
    

    这是一个常见的错误,但如果是2501,您可以像其他错误一样捕获它并忽略它。

        2
  •  1
  •   Philippe Grondier    16 年前

    错误可能来自DoCmd。打开报告行。这就是错误处理程序不起作用的原因。

        3
  •  1
  •   anthony d    11 年前

    检查默认打印机。我也犯了同样的错误;我所有的代码都正常工作。使用计算机的人将默认打印机设置为标签打印机。不知怎么的,Access正在检查打印机;知道它没有正确的大小设置来打印,所以它停止了报告的显示。

        4
  •  0
  •   unsafe_where_true    16 年前

    好的,现在可以了。

        On Error GoTo CancelError 
        If Not IsNull(vFilter) Then 
           DoCmd.OpenReport vBerichtName, nAnsicht, , vFilter 
        Else 
           DoCmd.OpenReport vBerichtName, nAnsicht 
        End If
    CancelError:
      DoCmd.Close acReport, vBerichtName
      DoCmd.Close acForm, "F_BerichtDrucken"
      Echo True  ' this did the trick 
      Exit Function 
    

    现在很顺利,回到之前的状态,允许