【问题标题】:Using SELECT statement inside an IF Else condition in JasperReports SQL query in JasperReports Server在 JasperReports Server 的 JasperReports SQL 查询中的 IF Else 条件中使用 SELECT 语句
【发布时间】:2014-09-25 19:04:32
【问题描述】:

我有以下示例查询:

     IF(1=1)
      Select  top 10 * from Person

     ELSE
      Select top 10 * from Person where Id < 20

当我使用 iReport 创建具有上述查询的报告时,报告工作正常。

但是当我将相同的报告上传到 JasperReports Server 并尝试运行报告时,它会抛出以下错误。

ERROR Validator,report1 subreports #1:493 - Invalid SQL:An error has occurred. 
Please contact your system administrator. (6632), 
SQL: IF(1=1)Select  top 10 * from PersonELSESelect top 10 * from Person where Id < 20.

JasperReports Server 是否支持 SELECT 语句之外的 IF..Else 条件?

有人知道这个错误吗?

【问题讨论】:

  • @AlexK 感谢您的回复。最初我也是这么想的,并验证了查询,发现它是正确的。现在我什至尝试只使用前面提到的 if 条件,但是这次我遇到了与“' SQL: IF(1=1)Select top 10 * from Person '”相同的错误。当我使用 SQL“'IF(1=1) Select top 10 * from Person'”测试场景时,我发现我上传的报告是错误的。所以现在我已经正确地编辑了这个问题。

标签: jasper-reports jasperserver


【解决方案1】:

搜索了大约 4 天后,我找到了解决方案。

Jasper Server 允许仅以“SELECT”关键字开头的 SQL 查询。因此,为了使其他查询正常工作,我们必须修改“webapps/jasperserver/WEB-INF/classes/esapi/security-config.properties/validation.properties”位置中存在的“Validator.ValidSQL”的正则表达式.

我已修改此正则表达式以支持“IF”条件并使其工作。

从 jasper 社区论坛获得此解决方案:

http://community.jaspersoft.com/questions/800208/stored-procedures-works-ireport-does-not-work-jasperserver.

【讨论】:

    猜你喜欢
    • 2016-10-06
    • 2017-07-06
    • 2012-11-11
    • 2014-11-03
    • 2021-03-28
    • 2011-05-25
    • 1970-01-01
    • 2014-10-18
    • 2019-07-22
    相关资源
    最近更新 更多