我正在使用iReport使用某些数据库连接创建JasperReports的报告。我在报告中添加了一个新字段。该字段在数据库列中不存在。我已将该列放在报表中,并使用表达式将值分配给此字段。
它编译得很好但是当我使用数据库填充报告时,它会给我错误:
Error filling print... Unknown column name : test
net.sf.jasperreports.engine.JRException: Unknown column name : test
at net.sf.jasperreports.engine.JRResultSetDataSource.getColumnIndex(JRResultSetDataSource.java:355)
at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:112)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:823)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:787)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1474)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:125)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:938)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:841)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:858)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)
Print not filled. Try to use an EmptyDataSource...
如何在JasperReports中使用用户定义的字段?
答案 0 :(得分:4)
我不确定导致此错误堆栈的原因但我认为这是因为您的SELECT中有一个字段与报表字段中的任何字段都不匹配。
我的建议是在报告查询窗口中使用“读取字段”按钮,它使用查询字段填充字段变量,避免以后出现问题。
答案 1 :(得分:1)
一个原因可能是字段$ F {name}的长度。名称不应超过32个字符(字段< 32)。
我也有这个例外,但重命名字段后一切正常。
亲切的问候, 哔叽