如何在Jasper中正确使用$ X? JSS中的参数和IN子句出现问题

问题描述 投票:0回答:2

我有一个用Jaspersoft Studio制作的报告,在数据集查询中,我需要使用IN子句,因为我正在使用表达式"$X{IN ..."

问题#1:该参数使用的正确类型是什么?我正在使用以下格式:“在此处输入图像描述”

问题#2:如何在预览中进行测试?参数屏幕:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9nVHFlQS5wbmcifQ==” alt =“在此处输入图像描述”>

为提供帮助,请遵循使用了参数的节选摘录:

"...Where (($X{IN, db.empresa, paramIdEmpresa}) OR $ P!{ParamIdEmpresa} IS NULL) and (db_view ... "

带有以上参数的预览中出现的错误:

net.sf.jasperreports.engine.JRException: Error executing SQL statement
for: unit1. at com.jaspersoft.studio.editor.preview.view.control.ReportController.fillReport
(ReportController.java:551) at com.jaspersoft.studio.editor.preview.view.control.ReportController.access
 (BaseFillHandle.java:135) at java.lang.Thread.run (Thread.java:748)
 Caused by: org.postgresql.util.PSQLException: ERROR: syntax error at
 or near "["   Position: 199 at
 org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse
 (QueryExecutorImpl.java:2440) at
 org.postgresql.core.v3.QueryExecutorImpl.processResults
jasper-reports
2个回答
0
投票

问题出在查询中,而不是在碧玉中...

正确的查询是:

where 
    (($X{IN,db.idempresa, paramIdEmpresa}) OR db.idempresa IS NULL ) 

感谢GP ...


0
投票

嗯...好吧,对于每个经历这场噩梦的人,解决它的最佳方法很简单:创建一个名为$ P!{paramWhere}的参数。在您的应用程序中,您传递了此参数的完整where子句,例如“ id = 200”。

在jasper中的查询中,您将其输入如下:“ ...从$ P中选择*!{paramWhere} ...”就这样,它将神奇地起作用。

© www.soinside.com 2019 - 2024. All rights reserved.