我有一个相对简单的查询,每行返回3个数据字段,其中包含一个日期。就像这样:
SELECT DATE(date) AS date, val1, val2
FROM tables
WHERE ...从报告本身(详细信息带),我可以确认所有的“日期”字段都是非空的。我的时间序列图的设置如下:
$F{date}$F{val2} - $F{val2}我得到的错误是:
java.lang.IllegalArgumentException: Null 'period' argument.
at org.jfree.chart.util.ParamChecks.nullNotPermitted(ParamChecks.java:65)
at org.jfree.data.time.TimeSeriesDataItem.<init>(TimeSeriesDataItem.java:99)
at org.jfree.data.time.TimeSeries.addOrUpdate(TimeSeries.java:887)
...我甚至尝试将“时间段表达式”设置为(null == $F{date} ? "foo" : $F{date})表达式,只是为了看看是否可以让它以不同的方式失败(比如ClassCastException),但是它仍然会在相同的消息中失败。
$F{date}的数据类型是java.sql.Date,另外两个字段的数据类型都是java.lang.Long。
我正在使用Jasper 6.4.0,如果这有什么不同的话。
发布于 2017-10-11 13:59:18
我可能找到了一个答案,看起来它可能是JasperReports中的一个bug。
在发帖之前,我在网上搜索这个问题的答案,而大多数问题都没有得到回答,或者回答的思路是“也发生在我身上”或“为我工作”,而没有任何真正的答案。
在对每一个可能的null值进行处理之后,它仍然没有工作。因此,我尝试将"TimePeriod“设置更改为"”,以查看会发生什么。没有改变,但回到编辑图表时,我注意到"Day“仍然是"TimePeriod”参数的设置。真奇怪。
我真的很想要白天级别的报告,但我是在抓稻草,所以我把TimePeriod改为"Week",报告成功地运行了。
然后,我将"TimePeriod“从"Week”改为"Day“,并且没有出错。因此,可能默认的"TimePeriod“设置实际上是<NULL>,但是Jasper将其显示为”日“,而它实际上不是?我不知道。但是,尝试将TimePeriod更改为其他东西,然后更改为您真正想要的内容。
https://stackoverflow.com/questions/46689939
复制相似问题