我有一个相对简单的查询,每行返回 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 Studio 6.4.0,如果这有什么区别的话。
我可能已经找到了答案,看起来这可能是 JasperReports 中的一个错误。
我在发布之前在网上搜索了这个问题的答案,大多数问题都没有得到解答,或者回复都是“也发生在我身上”或“对我有用”,没有任何真正的答案。
在安排了每一个可能的
null
值处理后,仍然没有成功。所以我尝试将“TimePeriod”设置更改为“”只是为了看看会发生什么。没有变化,但返回编辑图表,我注意到“Day”仍然是“TimePeriod”参数的设置。奇怪。
我很想要日级别的报告,但我抓住了救命稻草,所以我将 TimePeriod 更改为“Week”,报告运行成功。
然后,我将“TimePeriod”从“Week”更改回“Day”,它运行时没有错误。所以也许默认的“TimePeriod”设置实际上是
<NULL>
,但 Jasper Studio 将其显示为“Day”,而实际上不是?我不知道。但尝试将 TimePeriod 更改为其他内容,然后更改为您真正想要的。
如果您连接了数据适配器,请尝试单击“测试连接”来刷新它。