2010-09-01 11 views
0

J'essaie d'apprendre JasperReports sur certains sites de tutoriel en ligne, mais je ne peux pas sembler faire ce travail de snippet simple.JasperReports: Field Date

Je voulais sélectionner un champ de date de ma base de données et le transmettre dans mon fichier 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"/> 

Mais je ne peux pas obtenir passer le processus de remplissage et j'ai une erreur: Unable to get value for field date_acquired of class "java.util.Date". J'ai essayé d'utiliser l'étiquette d'importation aussi.

Une idée s'il vous plaît?

Répondre

1

J'ai copié votre modèle de rapport, créer l'exemple base de données MySql avec une table

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

J'inséré une ligne:

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

requête de test:

mysql> select * from tools; 
+------+------------+ 
| id | a_date  | 
+------+------------+ 
| 1 | 2010-05-01 | 
+------+------------+ 
1 row in set (0.00 sec) 

Après que j'ai utilisé votre modèle et l'ai testé sous l'outil iReport. Ouvrez simplement votre rapport en utilisant iReport.

Votre modèle de rapport avec peu de modifications:

<?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> 

Utilisation d'une connexion de base de données MySQL et le modèle de rapport je l'ai testé la génération de rapports sous iReport et il fonctionne très bien. Etes-vous sûr que le champ "date_acquired" est le type de DATE (ou un autre format pour les dates dans votre base de données) dans la base de données? Je vous recommande d'utiliser la génération de modèle de rapport avant iReport. C'est très utile et cela vous empêche d'écrire beaucoup de code "ennuyeux". En outre, il peut vous aider à créer des champs de rapport à partir de la requête sql et à le tester en utilisant une base de données réelle.

+0

. Je vais étudier cette chose iReport et l'essayer. En fait, je comprends encore les détails de JasperReports. J'ai lu que c'est une bonne chose d'apprendre les détails de Jasperreport avant d'utiliser l'outil GUI (iReport). Merci pour la réponse rapide. –

+0

Vous avez absolument raison d'utiliser l'outil GUI, mais cela peut vous aider à voir les erreurs. iReport simplifie les tests de cas. – Vadeg

+0

Merci .. Je pense que j'ai déjà compris ... –