Jasper reports Jasperreports:如何优雅地处理或忽略SQL错误?

Jasper reports Jasperreports:如何优雅地处理或忽略SQL错误?,jasper-reports,Jasper Reports,我们的运行时环境是Tomcat,带有精简的jasperreports servlet,具有compile/getconnection/fill/generate PDF功能。 报表通常由几个表组成,每个表都有自己的数据集(SQL查询)。 JR版本是6.2.0 有没有办法: 优雅地处理数据集中的SQL错误-即捕获它并 显示错误代码/消息 或 忽略SQL错误,以便报表执行不会中断 (当然,如果其他报表部分依赖于错误的sql查询, 报告最终将被打破) 是否可以使用自定义scriptlet类、自定义数据

我们的运行时环境是Tomcat,带有精简的jasperreports servlet,具有
compile/get
connection/fill/generate PDF
功能。 报表通常由几个表组成,每个表都有自己的数据集(SQL查询)。 JR版本是6.2.0

有没有办法:

  • 优雅地处理数据集中的SQL错误-即捕获它并 显示错误代码/消息
  • 忽略SQL错误,以便报表执行不会中断 (当然,如果其他报表部分依赖于错误的sql查询, 报告最终将被打破)
  • 是否可以使用自定义scriptlet类、自定义数据适配器、数据源或类似的东西(覆盖某些引擎
    类/方法
    )来实现这一点

    关于,,
    Goran

    JasperReport只是数据的查看者。错误管理必须在其他地方进行

    两个想法:将函数具体化为一个“业务”表,并在表上使用JasperReports进行选择。当然,结果会有更多的表格。如果作业尚未完成,则不会有任何数据。这是我们通常处理此要求的方式

    或者,您可以使用,选择Java代码中的数据并在那里处理错误。在报告中,您可以使用“无数据”字段或“错误”参数,该参数通常为空。如果发生错误,将用错误消息填充。这可以通过
    自定义数据源来完成,如中所示。在自定义数据源中,您可以使用自己的方法选择数据并处理任何错误。然后您可以控制返回的结果


    注意:我们还没有实现自定义数据源,所以可能还有更好的方法

    JasperReport只是数据的查看器。错误管理必须在其他地方进行

    两个想法:将函数具体化为一个“业务”表,并在表上使用JasperReports进行选择。当然,结果会有更多的表格。如果作业尚未完成,则不会有任何数据。这是我们通常处理此要求的方式

    或者,您可以使用,选择Java代码中的数据并在那里处理错误。在报告中,您可以使用“无数据”字段或“错误”参数,该参数通常为空。如果发生错误,将用错误消息填充。这可以通过
    自定义数据源来完成,如中所示。在自定义数据源中,您可以使用自己的方法选择数据并处理任何错误。然后您可以控制返回的结果


    注意:我们还没有实现自定义数据源,所以可能还有更好的方法

    为什么数据集中会有错误?你能详细说明一下你会遇到什么样的错误吗?这些不是典型的
    select col1,col2。。。从表1到表2,其中…
    数据集。
    select
    from
    子句都涉及许多自定义函数,这些函数可能因业务规则而引发异常。例如,函数getBatchSize(batch_id)可能会失败,出现错误“ORA-20194:批处理未完成”,并停止报告执行(这是我们试图避免的)。异常应该以某种方式捕获并显示在报告中。当然,我们可以开发一些新函数,如isBatchCompleted(batch_id),并在SQL中使用它们,但这会增加太多的复杂性。为什么数据集中会出现错误?你能详细说明一下你会遇到什么样的错误吗?这些不是典型的
    select col1,col2。。。从表1到表2,其中…
    数据集。
    select
    from
    子句都涉及许多自定义函数,这些函数可能因业务规则而引发异常。例如,函数getBatchSize(batch_id)可能会失败,出现错误“ORA-20194:批处理未完成”,并停止报告执行(这是我们试图避免的)。异常应该以某种方式捕获并显示在报告中。当然,我们可以开发一些新函数,比如isBatchCompleted(batch_id),并在SQL中使用它们,但这会增加太多的复杂性。