无法相信我在这一次上失去了那么多时间。
我有一个订单,当我点击“报告”按钮时,会出现一个对话框 弹出窗口,其中包含可供选择的不同报告的列表。双击选择 并开始通讯报道。
在其中一个报告中,有一个未绑定的文本框我需要用户输入数据。 此字段的ControlSource设置为其Name属性。 报告启动时,会出现一个输入框,其中包含“确定”和“取消”按钮。每当我输入一些数据时,一切都很好。
但是当我点击“取消”时,应用程序崩溃了,我收到错误消息: “运行时错误2501:Action OpenReport已被取消”(由德语翻译)。
通过以下代码调用报告:
DoCmd.OpenReport vBerichtName, nAnsicht
End If
On Error Resume Next
DoCmd.Close acForm, "F_BerichtDrucken"
On Error GoTo 0
1)为什么错误处理没有启动?
2)我用谷歌搜索并找到了许多奇怪的解决方案,就像官方微软说你需要安装/更新打印机驱动程序(来吧......)。没人帮忙。
我正在为朋友这样做,我通常在linux / php,java等工作。如果解决方案有点明显,或者类似的话,我很抱歉。
答案 0 :(得分:2)
与Phillipe的回答不一样。你没有给我们整个程序,但你需要做这样的事情......
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则忽略它 塞特
答案 1 :(得分:1)
错误可能来自DoCmd.OpenReport行。这就是错误处理程序不起作用的原因。
我猜你所要求的价值在某种程度上是强制性的。您是否尝试将错误管理行放在docmd.openReport之前?
答案 2 :(得分:1)
检查您的默认打印机。我得到了同样的错误&我的所有代码都正常工作。使用计算机的人将默认打印机设置为标签打印机。 Access以某种方式正在检查打印机&知道它没有正确的尺寸设置来打印,所以它停止了报告的显示。
我将默认打印机更改为另一台全尺寸打印机,效果很好。
我希望这对某人有所帮助,因为我在第一次出现时感到茫然。
答案 3 :(得分:0)
好的,它现在有效。
根据你的建议,我把代码放在这样:
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
只要我将Echo True放入错误处理中,就可以了 现在顺利,回到以前的形式并允许 继续工作 - 看起来像“Echo”对屏幕有一种复习......?