用IReport做圖表報異常Error filling print... Null 'key' argument的解決辦法!
昨天下午在用IReport做圖表,執行報表的時候,一直出現異常資訊:
Error filling print... Null 'key' argument.
java.lang.IllegalArgumentException: Null 'key' argument.
at org.jfree.data.DefaultKeyedValues.setValue(DefaultKeyedValues.java:225)
at org.jfree.data.general.DefaultPieDataset.setValue(DefaultPieDataset.java:187)
at net.sf.jasperreports.charts.fill.JRFillPieDataset.customIncrement(JRFillPieDataset.java:159)
at net.sf.jasperreports.engine.fill.JRFillElementDataset.increment(JRFillElementDataset.java:169)
at net.sf.jasperreports.engine.fill.JRCalculator.calculateVariables(JRCalculator.java:152)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:682)
SQL為:
select b.branchname,count(o.operatorid) as ncount from tnoperator o left join tnbranch b on o.branchno=b.branchno group by b.branchname
一開始以為是報表的什麼引數有誤,但是找了很久也沒有找到有什麼報表引數會造成這個問題。後來在網上看了無數帖子,也沒有人提到這種錯誤可能的原因。後來無意之中看到了自己寫的SQL語句,而後在SQL工具中,執行了一下這條SQL語句,結果發現了一行資料中竟然有一列的資料是null值,難道是這個原因,在SQL中加上過濾條件“is not null”之後,再次執行報表,順利通過。
更改後的SQL為:
select b.branchname,count(o.operatorid) as ncount from tnoperator o left join tnbranch b on o.branchno=b.branchno where b.branchname is not null group by b.branchname