我有一个相对简单的查询,每行返回3个数据字段,并带有日期。像这样:
SELECT DATE(date) AS date, val1, val2
FROM tables
WHERE ...
从报告本身(细节带),我可以确认所有" date"字段是非NULL。我的时间序列图表的设置如下:
$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)
...
我甚至试过设置&#34;时间段表达&#34;到表达式(null == $F{date} ? "foo" : $F{date})
只是为了看看我是否能以不同的说法(如ClassCastException
)使其失败,但它仍然会失败并显示相同的消息。
$F{date}
的数据类型为java.sql.Date
,其他两个字段的数据类型为java.lang.Long
。
我使用Jasper Studio 6.4.0,如果这有任何区别的话。
答案 0 :(得分:1)
我可能已找到答案,看起来它可能是JasperReports中的一个错误。
我在发布之前在网上搜索了这个问题的答案,并且大多数问题都没有得到答复,或者回答是“发生在我身上”或“对我有用”而没有任何真正的答案。
在安排处理每个可能的null
值之后,它仍然无法正常工作。所以我尝试将“TimePeriod”设置更改为“”只是为了看看会发生什么。没有变化,但回去编辑图表,我注意到“Day”仍然是“TimePeriod”参数的设置。怪异。
我真的想要日级报告,但我抓住了吸管,所以我将TimePeriod更改为“Week”,报告成功运行。
然后,我将“TimePeriod”从“Week”更改回“Day”,并且它正在运行而没有错误。因此,默认的“TimePeriod”设置实际上可能是<NULL>
,但Jasper Studio显示为“Day”,但实际上并非如此?我不知道。但是尝试将TimePeriod更改为其他内容,然后更改为您真正想要的内容。