2010-09-01 48 views
0

我想在一些在线教程网站上学习JasperReports,但我似乎无法做出这个简单的代码片段工作。JasperReports:Field Date

我想从我的数据库中选择一个日期字段并将其传递到我的jrxml文件中。

<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" 
       name="ToolDemo" 
       columnCount="2" 
       columnWidth="240" pageWidth="612" pageHeight="792"> 
    <import value="java.util.Date"/> 

    <queryString> 
     <![CDATA[select a.id, a.date_acquired from tools a where a.country = 'Oceania']]> 
    </queryString> 

    <field name="id" class="java.lang.String"/> 
    <field name="date_acquired" class="java.util.Date"/> 

但我不能通过填充过程,我有一个错误:Unable to get value for field date_acquired of class "java.util.Date"。我也尝试使用导入标签。

有什么想法吗?

回答

1

我复制你的报告模板,用一个表创建示例MySql数据库

+--------+-------------+------+-----+---------+-------+ 
| Field | Type  | Null | Key | Default | Extra | 
+--------+-------------+------+-----+---------+-------+ 
| id  | varchar(20) | YES |  | NULL |  | 
| a_date | date  | YES |  | NULL |  | 
+--------+-------------+------+-----+---------+-------+ 

然后我插入一行:

insert into tools(id, a_date) values('1', '2010-05-01'); 

测试查询:

​​

后我使用了你的模板并在iReport工具下进行了测试。只需打开你使用iReport报告。

你很少修改报表模板:

<?xml version="1.0" encoding="UTF-8"?> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="report2" language="groovy" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20"> 
    <property name="ireport.zoom" value="1.0"/> 
    <property name="ireport.x" value="0"/> 
    <property name="ireport.y" value="0"/> 
    <import value="java.util.Date"/> 
    <queryString> 
     <![CDATA[SELECT a.id, a.a_date FROM tools a]]> 
    </queryString> 
    <field name="id" class="java.lang.String"/> 
    <field name="a_date" class="java.sql.Date"/> 
    <title> 
     <band height="79" splitType="Stretch"/> 
    </title> 
    <detail> 
     <band height="125" splitType="Stretch"> 
      <textField> 
       <reportElement x="100" y="24" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression class="java.lang.String"><![CDATA[$F{id}]]></textFieldExpression> 
      </textField> 
      <textField> 
       <reportElement x="200" y="24" width="100" height="20"/> 
       <textElement/> 
       <textFieldExpression class="java.util.Date"><![CDATA[$F{a_date}]]></textFieldExpression> 
      </textField> 
     </band> 
    </detail> 
</jasperReport> 

使用MySQL数据库连接和报告模板我的iReport下测试报告生成,它工作正常。

您确定字段“date_acquired”是DATE类型(或数据库中日期的其他格式)吗?我建议您使用iReport报告模板生成。这是非常有用的,并防止你写很多“无聊”的代码。此外,它可以帮助您从sql查询创建报告字段并使用真实数据库对其进行测试。

+0

。我会研究这个iReport的事情,并尝试一下。我其实还在理解JasperReports的细节。我已经读过使用GUI工具(iReport)之前了解Jasperreport细节的好消息。感谢您及时的回复。 – 2010-09-01 08:26:02

+0

你完全正确的使用GUI工具,但它可以帮助你看到错误。 iReport简化了测试案例。 – Vadeg 2010-09-01 10:46:12

+0

谢谢..我想我已经得到了你的观点...... – 2010-09-02 02:07:17