2009-09-07 33 views
1

Le .jrxml suivant:iReport: Erreur lors de la compilation avec rapport sous-état

<?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="DTC-Campaigns-Block-Campaigns-Helper-Campaigns" language="groovy" pageWidth="794" pageHeight="450" orientation="Landscape" columnWidth="794" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0"> 
    <queryString><![CDATA[SELECT 1;]]></queryString> 
    <detail> 
     <band height="50" splitType="Stretch"> 
      <subreport> 
       <reportElement x="0" y="0" width="794" height="25"/> 
       <subreportExpression class="java.lang.String"><![CDATA["./test.jasper"]]></subreportExpression> 
      </subreport> 
     </band> 
    </detail> 
</jasperReport> 

ne compilera pas dans les iReport 3.6.0:

Compiling to file... /home/dominik/workspace/project1/reporting/MyFile.jasper 
Compiling subreports.... 
Unable to locate the subreport with expression: "$P{SUBREPORT_DIR} + "test.jasper"". 

Même fixation SUBREPORT_DIR-./ ne va pas aider, aucun ne compilera manuellement test.jrxml avant le rapport principal.

Des idées?

Répondre

0

Le problème n'apparaît plus avec les nouvelles versions de JasperReports (du moins pas dans mon cas).

0

Vous ne pouvez pas déterminer le répertoire actuel et le transmettre en tant que paramètre? C'est comme ça que je le fais et ça marche plutôt bien. Si vous intégrez des rapports Jasper dans du code, vous pouvez même utiliser du code pour obtenir le chemin complet du répertoire courant en Java et le transmettre via un HashMap.

+0

Eh bien, je ne l'ai même pas démarré depuis ma propre application Java mais depuis iReport. –

+0

Vous pouvez définir un paramètre par défaut pour le paramètre et inviter l'utilisateur à le modifier si nécessaire. Jasper semble être configuré pour utiliser uniquement un chemin _full_, pas un chemin relatif (./foo) pendant que vous essayez. Les chemins relatifs sont un peu plus pratiques, mais ne devraient être strictement nécessaires que s'ils sont intégrés dans un programme, où vous pouvez quand même déterminer le chemin complet à partir du chemin relatif. – sventechie

1

Dans l'extrait jrxml, vous ne spécifiez pas que SUBREPORT_DIR est un paramètre String ... Vous pouvez ajouter cette information.

Je remarque aussi un changement de comportements entre version 3.5.2 and 3.5.3 Changelog de la version 3.5.3 dit:

compilation automatique des sous-rapports

En tant que chemin de sous-état Paramétrer conséquence ne semble pas fonctionner tout plus long ... (mais je me suis souvenu d'avoir un avertissement, et pas un échec).

Avez-vous essayé:

  • Pour compiler uniquement le sous-état (en utilisant iReport). [un aperçu produira le fichier jasper qui est la version compilée du jrxml]
  • Pour donner une expression avec le fichier jrxml (au lieu du fichier jasper) $P{SUBREPORT_DIR} + "test.jrxml", et sans paramètre du tout (comme "test.jrxml" - votre sous-rapport doit être dans le même répertoire local que votre rapport principal)
0

Pour résoudre ce problème, vous devez définir le chemin absolu dans $ P {SUBREPORT_DIR}.

Cela peut être fait dans iReport dans les propriétés, dans l'attribut "Default Value Expression".

Pour une meilleure explication, voir: http://jasperforge.org/plugins/espforum/view.php?group_id=83&forumid=101&topicid=62793

+4

Mais cela ne fonctionne que si le rapport est toujours compilé dans la même structure de répertoires. Que se passe-t-il si je crée le rapport sur ma machine locale et que je le déplace vers un serveur pour un traitement ultérieur? Quoi qu'il en soit, pour l'instant j'ai simplement mis tous les fichiers source dans un dossier. –

0

vous n'avez pas besoin d'inclure dans SUBREPORT_DIR ... subreport Tant que supreport est dans le même répertoire comme dans le principal rapport .. il n'y aurait pas de problème. ..compilation survient lorsque vous prévisualisez le fichier jrxml ...

+2

Mais que se passe-t-il s'ils ne sont pas dans le même répertoire - lequel est généralement la structure de nettoyage? –

0

Dans mon cas: Dans la propriété Subreport Expression de l'éditeur de propriété que j'ajouté, le paramètre SUBREPORT_DIR et un / pour obtenir quelque chose comme:

$P{SUBREPORT_DIR} + "/InvoiceDetail.jasper" 
0

J'utilise la version 3.7 iReport.3

Le problème peut être résolu de deux manières:

1.Assign la valeur du paramètre SUBREPORT_DIR à une variable et utiliser la variable au lieu de paramètres comme:

$V{path} + "InvoiceDetail.jasper" 

Assurez-vous que le ' l'expression variable » défini comme $ P {} SUBREPORT_DIR

2.Réglez la 'Valeur par défaut expression' du paramètre SUBREPORT_DIR comme $ P {SUBREPORT_DIR} et de l'utiliser comme:

$P{SUBREPORT_DIR} + "InvoiceDetail.jasper" 
Questions connexes