Jasper reports JasperReport:如何从;oracle.sql.TIMESTAMP';领域

Jasper reports JasperReport:如何从;oracle.sql.TIMESTAMP';领域,jasper-reports,Jasper Reports,我正在使用iReport 4.5.1,需要从oracle.sql.TIMESTAMP获取日期 在我用这两个词试过的表达中: $F{DELIVERY_DATE}.dateValue() $F{DELIVERY_DATE}.timestampValue() 但我得到了相同的运行时错误 JasperReport错误: 填充打印时出错…计算表达式时出错: 源文本:$F{DELIVERY_DATE}.dateValue()net.sf.jasperreports.engine.fill.jrepressi

我正在使用iReport 4.5.1,需要从oracle.sql.TIMESTAMP获取日期
在我用这两个词试过的表达中:

  • $F{DELIVERY_DATE}.dateValue()
  • $F{DELIVERY_DATE}.timestampValue()
  • 但我得到了相同的运行时错误

    JasperReport错误:

    填充打印时出错…计算表达式时出错: 源文本:$F{DELIVERY_DATE}.dateValue()net.sf.jasperreports.engine.fill.jrepressionevalexception:计算表达式时出错: 源文本:$F{DELIVERY_DATE}.dateValue()位于net.sf.jasperreports.engine.fill.jrelevaluator.evaluate(jrelevaluator.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 在列表框1439547941026中进行评估(列表框1439547941026:438) 在net.sf.jasperreports.engine.fill.JREvaluator.evaluate上(JREvaluator.java:190) …还有19个

    提前谢谢


    Anand

    这个问题已经在这里解决了

    试试这个

    在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的数据类型
    oracle.sql.TIMESTAMP

    i、 e.尝试将jasperReport文件中的
    oracle.sql.TIMESTAMP
    更改为
    java.util.Date
    ,并直接使用Jasper报告中的
    DELIVERY\u Date字段

    注意:

    如果您在JasperReport的“报告查询”部分中对那些导致搜索“oracle.sql.TIMESTAMP不能转换为oracle.sql.TIMESTAMP”的查询进行修改,则您可能必须在JasperReport的XML中将DELIVERY_DATE的数据类型反复修改为
    java.util.DATE
    搜索查询-除了Jasper,这可能发生在其他情况下-例如,对我来说,我在tomcat上使用我的项目,ojdbc6.jar都加载在我的webapp和tomcat/lib文件夹中。解决方案是在我的webapp的Maven依赖项中指定ojdbc6库的“提供”范围

    给出了问题的根源