| ||
auteurs : candre, Faisel Chabli | ||
Un subdataset est un concept à mi-chemin entre la source de données
et le sous-rapport: ils permettent au programme de parcourir
un certain nombre d'enregistrements (comme une datasource)
mais ils permettent aussi l'utilisation de calculs
et de paramètres (comme un sous-rapport).
| ||
lien : Utilisation des SubDataSet avec JasperReports |
| ||
auteur : Faisel Chabli | ||
Aller dans : Options Classpath
Cliquer sur Ajouter JAR
et sélectionner votre JAR.
|
| ||
auteur : Peanut | ||
Et une variante, si vous ne voulez pas de caractère séparateur en fin de ligne, il suffit de rajouter :
|
| ||
auteur : Alucard95 | ||
Pour utiliser les Scriptlets, il faut tout d'abord, dans les propriétés du document
mettre à scriptlet -> Utiliser le support de Scriptlet interne iReport.
Ensuite, pour ouvrir l'éditeur de scriptlet : modifier -> editeur de scriptlets.
L'éditeur va alors s'ouvrir, il ne reste plus qu'à écrire son scriptlet.
On peut soit l'écrire dans Imports et declarations globale où là le scriptlet
ne sera utilisé que lorsqu'il sera appeler
ou soit utiliser les fonctions préexistantes telless que
par exemple beforePageInit(), afterPageInit(), etc... qui sont
des fonctions prévues pour s'exécuter à des moments bien précis lors de la génération du rapport.
Une fois votre scriptlet écrit, il ne faut pas oublier de cliquer
sur enregistrer puis ensuite de compiler Créer -> compiler.
Cela aura pour effet de créer (s'il n'y a pas d'erreur) deux fichiers avec
pour nom : nomFichierScriptlet.java et nomFichierScriptlet.class
dans le repertoire du chemin d'instalaltion de iReport.
L'appel de la fonction se fait avec cette syntaxe :
Chemin de classe :
Pour que les scriptlets fonctionnent, il est nécessaire de rajouter l'archive tools.jar
dans les chemins de classes. Cela peut-très bien être celui qui est
intégré à iReport ou celui de JDK.
Exemple de chemin de classe : C:\Program Files\Java\jdk1.6.0_11\lib\tools.jar
Problème rencontré :
Si lorsque vous modifiez une fonction de votre scriptlet et que vous vous apercevez que les modifications
ne sont pas prises en compte tant que vous ne relancez pas iReport,
il peut s'agir du fait qu'il faut placer tout les fichiers dans le repertoire iReport.
|
| ||||||||
auteur : besstiolle | ||||||||
j'ai un bean (Client) complexe : de nombreuses informations unitaire (nom/prenom/age) mais également
des listes d'informations (les adresses/les numéros de téléphones).
Je dois sans attaquer ma base de donnée afficher le contenu du Bean dans Report afin
de sortir une fiche cliente.
Exemple avec 3 classes :
Dans le Bean ou la classe qui génèrera l'appel à l'impression, Créez une HashMap et remplissez là des attributs nécessaires.
ajoutez y les listes :
Appelez le report de cette manière :
La variable file doit être déclaré ainsi :
Notez qu'aucune source de données n'a été passée en paramètre pour ce report.
Dans le Report principal créez la liste des Paramètres necessaires : nom / prenom / age / listeTelephone (de type Collection) / listeAdresse (Collection)
Dans la bande Title insérer un sous report en plus des champs qui afficherons le nom / prenom / age
Le wizard de création vous permet entre autre de spécifier la source de donnée du sous-rapport. Lui sélectionner l'option :
utiliser l'expression de la source de donnée et y taper :
ça transforme votre liste en pseudo source de donnée qu'utilisera le sous rapport.
Créez dans le sous-report les entête de colonne dans sa bande title (par exemple et simplement "numero" et un autre "actif". Dans la partie détail, créez deux TextField nommés "numeroDeTelephone" (String) et un second "actif" (boolean).
N'Oubliez pas de créer les deux valeurs de Champs en renseignant ET le "nom du champs" ET la "description" par "numeroDeTelephone" et par "actif" ce qui permet au report de faire la liaison entre l'objet de la ligne X, sa propriété "numeroDeTelephone" et le champs du report "numeroDeTelephone"
Voilà, enregistrez vous, et exécutez, le sous rapport ferra une itération sur la liste des numéros. Avec un second sous rapport lié aux liste d'adresse vous complèterez le rapport final.
Dernier point : pensez à spécifier l'attribut flottant à tous les champs situés sous une entrée de sous-rapport afin d'éviter les chevauchement :
Type de position : flottant
|
| ||||||
auteur : mimi31110 | ||||||
On veut afficher une liste de personnes qui ont chacune une liste de téléphones et une liste d'adresses :
on passe par une collection :
avec params, la hashMap des paramètres, et Personnes, une ArrayList<HashMap<String, Object>> !
par exemple, un élément (HashMap) de personnes contient :
Ainsi, dans les Champs sous iReport, dans le rapport principal (ou rapport père), vous avez :
La partie détail est composée des champs nom, prénom, age et de 2 sous rapports, un pour les téléphones, et un pour les adresses !
Pour passer les valeurs aux sous rapports (ou rapport secondaires) et ainsi qu'il répètent tout seul les lignes selon la quantité de données présentes, il faut renseigner, dans le rapport père :
dans les propriétés du sous rapport des téléphones
- expression de source de données :
- expression rapport secondaire :
Et dans les propriétés du sous rapport des adresses :
- expression de source de données :
- expression rapport secondaire :
les chemin des sous-rapports doivent obligatoirement être complet, dans l'application, on le passe en paramètre depuis java (ce qui rend votre code plus portable) :
Donc, autant de fois qu'il y a de sous rapport... SUB_JASPER_FILE étant une chaine de caractère constante contenant le nom du sous rapport.
Les rapports secondaires contiennent donc des champs qui ont des noms identiques aux clés des HashMap, comme par exemple pour les téléphones :
Au final, les personnes se répètent autant de fois qu'il en existe, et pour chaque personnes, les téléphones et adresses se répètent également selon les text-fields que vous avez créés !
|
| ||||
auteur : ALLODREN | ||||
Il faut que la requête ramène 2 valeurs : une valeur affichée et une autre qui va servir de critère dans ta clause where.
Exemple dans le cas où l'on souhaite afficher un ou plusieurs fournisseurs :
Etape 1 : Création du Paramètre :
Etape 2 : Dans la Requête :
Etape 3 : Dans l'input control :
|
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2009 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.