我正在使用iReport 4.5.1,我需要从 oracle.sql.TIMESTAMP 获取日期。
在表达式中我尝试了这两个:
但是我得到了相同的运行时错误
JasperReport错误:
错误填充打印...错误评估表达式: 源文本:$ F {DELIVERY_DATE} .dateValue()net.sf.jasperreports.engine.fill.JRExpressionEvalException:计算表达式时出错: 源文本:$ F {DELIVERY_DATE} .dateValue()at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:203) 在net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:591) 在net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:559) 在net.sf.jasperreports.engine.fill.JRFillElement.evaluateExpression(JRFillElement.java:876) 在net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:421) 在net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:406) 在net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:257) 在net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:473) 在net.sf.jasperreports.engine.fill.JRVerticalFiller.fillBandNoOverflow(JRVerticalFiller.java:434) 在net.sf.jasperreports.engine.fill.JRVerticalFiller.fillPageHeader(JRVerticalFiller.java:398) 在net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:259) 在net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128) 在net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:836) 在net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:746) 在net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58) 在net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417) 在net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247) 在com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:879) 在org.openide.util.RequestProcessor $ Task.run(RequestProcessor.java:572) 在org.openide.util.RequestProcessor $ Processor.run(RequestProcessor.java:997) java.lang.ClassCastException:由造成oracle.sql.TIMESTAMP不能转换为oracle.sql.TIMESTAMP 在Liste_colisage_par_rack_1439547941026_908820.evaluate(Liste_colisage_par_rack_1439547941026_908820:438) 在net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:190) ... 19更
提前致谢
阿南德
答案 0 :(得分:1)
试试这个
在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数据库中的 DataType oracle.sql.TIMESTAMP
到JasperReport。
即。尝试将jasperReport文件中的oracle.sql.TIMESTAMP
更改为java.util.Date
并直接使用Jasper报告中的DELIVERY_DATE Field
注意:
如果在JasperReport的“报告查询”部分修改查询,则可能必须在JasperReport的XML中重复修改DELIVERY_DATE的dataType为java.util.Date
答案 1 :(得分:0)
答案 2 :(得分:0)
对于导致该页面搜索“ oracle.sql.TIMESTAMP无法转换为oracle.sql.TIMESTAMP”搜索查询的用户-例如,除了Jasper之外,这可能会在其他情况下发生-例如,对于我来说,在tomcat上使用我的项目,并在我的web应用程序和Tomcat / lib文件夹中都加载了ojdbc6.jar。解决方案是在我的Webapp的Maven依赖项中指定范围为“提供”的ojdbc6库。
问题的根源为here