如何在Crystal Reports中显示自定义错误?

时间:2010-01-26 22:56:54

标签: crystal-reports

我们需要让Crystal Report弹出自定义错误消息,然后停止运行。许多谷歌搜索甚至都没有找到其他人在此之前询问如何做到这一点。

(触发错误是为了防止用户意外地进行长时间运行的查询,该查询与数据库服务器上的CPU挂钩。报告没有参数,第三方软件会将过滤条件附加到记录选择公式。)< / p>

我们迄今为止所做的最好的是:

NumberVar Zero := 0;

if InStr (RecordSelection, "IndexField", 1) <> 0 
then 1
else 1/Zero // Force divide by zero error to stop report from running

这会成功暂停报告,但会向用户显示令人困惑的“除以零”错误,而不是提供信息性错误消息。

如果我们无法获得完全自定义的错误消息,那么能够自定义部分消息可能是可接受的替代。

Crystal Report由第三方应用程序运行,因此我们必须能够完全从Crystal内部触发它。我们使用的是Crystal Reports Professional版本11.0.0.895。

我不认为编写Crystal函数库并将其部署到运行的任何地方的努力是值得的,因此需要使用内置的Crystal功能或其他所有标准功能来完成。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,如果没有过滤参数,则不希望运行查询。

我认为没有一种简单的方法可以创建自定义弹出窗口,但我想知道您是否可以将实际报告数据移动到子报告并将主报告留空。在子报表的抑制公式中,您可以放置​​InStr (RecordSelection, "IndexField", 1) = 0。禁止的子报表不会执行,因此长时间运行的查询将不起作用。在单独的部分中,您可以在其中放入包含错误消息的文本框。该部分的抑制公式为InStr (RecordSelection, "IndexField", 1) <> 0

用户不会获得弹出窗口,但报告本身会有一条消息说明失败的原因。