2010-09-01 6 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". Я также попытался использовать тег import.

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

ответ

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 и шаблон отчета я тестировал генерацию отчетов под иРепорт и она отлично работает.

Вы уверены, что поле "date_acquired" - это тип DATE (или другой формат для дат в вашей базе данных) в базе данных? Я рекомендую вам использовать создание шаблона отчета iReport fore. Это очень полезно и не позволяет писать много «скучного» кода. Кроме того, это может помочь вам создать поля отчета из SQL-запроса и протестировать его с использованием реальной базы данных.

+0

. Я изучу эту вещь iReport и попробую ее. Я все еще понимаю детали JasperReports. Я прочитал, что хорошо изучить детали Jasperreport перед использованием инструмента GUI (iReport). Спасибо за быстрый ответ. –

+0

Вы абсолютно правы в использовании инструмента GUI, но это может помочь вам увидеть ошибки. iReport упрощает проверки. – Vadeg

+0

Спасибо .. Я думаю, что у меня есть точка ... –

Смежные вопросы