我正在尝试在某些在线教程网站上学习JasperReports
,但我似乎无法使这个简单的代码段工作。
我想从我的数据库中选择一个日期字段并将其传递到我的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"
。我也试过使用import标签。
请问好吗?
答案 0 :(得分: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');
测试查询:
mysql> select * from tools;
+------+------------+
| id | a_date |
+------+------------+
| 1 | 2010-05-01 |
+------+------------+
1 row in set (0.00 sec)
之后我使用了您的模板并在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查询创建报告字段并使用真实数据库进行测试。