我使用的是 iReport 4.5.1,我需要从 oracle.sql.TIMESTAMP 获取日期。
在表达式中我尝试使用这两个:
- $F{DELIVERY_DATE}.dateValue()
- $F{DELIVERY_DATE}.timestampValue()
但我遇到了相同的运行时错误
JasperReport 错误:
Error filling print... Error evaluating expression : Source text : $F{DELIVERY_DATE}.dateValue() net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : Source text : $F{DELIVERY_DATE}.dateValue() at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559) at net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:876) at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:421) at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:406) at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257) at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:434) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVerticalFiller.java:398) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:259) at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:746) 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:879) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997) Caused by: java.lang.ClassCastException: oracle.sql.TIMESTAMP cannot be cast to oracle.sql.TIMESTAMP at Liste_colisage_par_rack_1439547941026_908820.evaluate(Liste_colisage_par_rack_1439547941026_908820:438) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190) ... 19 more
提前致谢
阿南德
最佳答案
试试这个
在iReport中,JasperReport文件的XML文件:
<queryString>
<![CDATA[*your query*]]>
</queryString>
<field name="DELIVERY_DATE" class="oracle.sql.TIMESTAMP"/>
<field name="NAME" class="java.lang.String"/>
也尝试改变它
<queryString>
<![CDATA[*your query*]]>
</queryString>
<field name="DELIVERY_DATE" class="java.util.Date"/>
<field name="NAME" class="java.lang.String"/>
当您在 JasperReport 中修改报表查询时,您可能会直接使用从 Oracle 数据库到 JasperReport 的DataType oracle.sql.TIMESTAMP
。
即尝试在 jasperReport 文件中将 oracle.sql.TIMESTAMP
更改为 java.util.Date
并直接在 Jasper Report 中使用DELIVERY_DATE Field
注意:
如果修改 JasperReport 报表查询部分的查询,可能需要在 JasperReport 的 XML 中重复修改 DELIVERY_DATE 的 dataType 为 java.util.Date
关于jasper-reports - 贾斯珀报告 : How to get date from the "oracle.sql.TIMESTAMP' field?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32012503/