JasperReports: Дата поля

Я пытаюсь изучить 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". Я также попытался использовать тег импорта.

Любая идея, пожалуйста?


person Mark Estrada    schedule 01.09.2010    source источник


Ответы (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-запроса и протестировать его с использованием реальной базы данных.

person Vadeg    schedule 01.09.2010
comment
. Я изучу эту штуку с iReport и попробую. На самом деле я все еще понимаю детали JasperReports. Я читал, что полезно изучить детали Jasperreport перед использованием инструмента с графическим интерфейсом (iReport). Спасибо за быстрый ответ. - person Mark Estrada; 01.09.2010
comment
Вы абсолютно правы насчет использования инструмента с графическим интерфейсом, но он может помочь вам увидеть ошибки. iReport упрощает тестирование случаев. - person Vadeg; 01.09.2010