【发布时间】:2017-03-13 18:30:04
【问题描述】:
我尝试创建的 JasperServer 报告存在以下问题: 我有几个数据库表,使用这样的名称和日期命名:
TABLE_NAME_YYYYMMDD
我希望能够从普通日期输入控件中选择(并从中选择)与用户提交的日期相对应的表。
我尝试创建一个变量(称为 TABLE_NAME),它使用 Java 表达式来解析日期,例如:
"MY_TABLE_" + new SimpleDateFormat("yyyyMMdd").format($P{RUN_DATE})
当我在报告中打印变量的值时,它看起来是正确的。但后来我尝试在 SQL 查询中使用该变量名,例如:
SELECT column1,column2.. from $V{TABLE_NAME}
但是当我尝试在 Jaspersoft Studio 中运行报告时,我得到了这个异常:
net.sf.jasperreports.engine.JRException: net.sf.jasperreports.engine.JRException: Error executing SQL statement for: my_report_x.
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.fillReport(ReportControler.java:511)
at com.jaspersoft.studio.editor.preview.view.control.ReportControler.access$20(ReportControler.java:486)
所以它似乎不起作用。
我了解到可以在参数中指定整个表名的情况,您应该使用:
$P!{tableName}
首先我尝试使用那个 '!'变量名如下:
..from $V!{TABLE_NAME}
但我遇到了同样的异常。
然后我尝试创建一个新参数,其中未选中“Is For Prompting”,并且作为默认值表达式,我放置了与变量中使用的相同的表达式:
"MY_TABLE_" + new SimpleDateFormat("yyyyMMdd").format($P{RUN_DATE})
但当我尝试在 Jaspersoft Studio 中运行报告时,我仍然遇到同样的错误。
有人知道有没有办法解决这个问题? - 最好是不需要几天才能实施的方法,因为我没有那个时间。
我正在使用 Jaspersoft Studio 6.1.1.final 并在 JasperServer 5.5.0 中运行报告。
【问题讨论】:
标签: jasper-reports