Utilisation des SubDataset pour la construction des graphes avec JasperReports

| Faisel Chabli | witch |

Cet article a pour objectif de vous guider dans l'élaboration de graphes en utilisant les SubDataset.

Commentez ♪

- Titre : Utilisation des SubDataset pour la construction des graphes avec JasperReports

- Auteurs : Faisel Chabli, witch

- Parution : 14 février 2011

- Mise à jour : 14 février 2011

- Licence : 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 ® 2011 Faisel Chabli. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Introduction

- II. Création de la base de données exemple et du SubDataset

- II-1. Création de la base de données

- II-2. Création et test du rapport principal

- II-3. Création et configuration du SubDataset

- III. Création et configuration du graphe avec le SubDataset

- III-1. Création du graphe

- III-2. Liaison du graphe avec le SubDataset

- IV. Téléchargements

- V. Conclusion

- VI. Remerciements

I - Introduction

La génération d'un rapport sous JasperReports est basée généralement sur une seule source de données (une requête SQL, une collection JavaBean, un fichier XML?). Toutefois, si vous avez affaire à un graphe ou un tableau croisé, cette source de données peut s'avérer insuffisante. Les SubDataset viennent alors remédier à cette problématique. Ainsi, un SubDataset est utilisé pour fournir de nouveaux enregistrements en se basant sur une nouvelle requête en utilisant une nouvelle source de données. Les SubDataset ne sont utilisés que pour l'alimentation des tableaux croisés et les graphes. L'utilisateur peut utiliser un nombre quelconque de SubDataset dans un rapport.

II - Création de la base de données exemple et du SubDataset

Cet article traite la répartition de la population mondiale par continent.

À titre indicatif, les statistiques figurant dans cet article sont issues du site Wikipédia

II-1 - Création de la base de données

La base de données que nous allons exploiter tout au long de cet article sera créée sur MS ACCESS. Cette base sera constituée d'une seule table avec deux champs (le nom du continent et sa population).

La structure de cette table se présente comme suit :

La taille du champ Population est Réel double.

Cette table est alimentée par les données suivantes :

II-2 - Création et test du rapport principal

La première des choses à faire est de configurer la source de données pointant sur la base de données récemment créée (Base_Population.mdb). Le lecteur peut se référer à cet article qui explique comment créer une source de données sous iReport.

Notre rapport principal sera constitué d'un seul champ qui contiendra le total des populations des différents continents.

Créons alors un rapport vide, comme le montre la figure suivante :

Comme requête pour ce rapport, nous allons saisir la requête suivante qui nous donnera le nombre total de toutes les populations des différents continents :

SELECT SUM(population) as Total_Population FROM Statistiques

Le champ Total_Population apparaîtra alors dans la liste des champs du rapport :

Nous allons glisser ce champ sur le rapport dans la bande détail comme suit :

Ce rapport contient outre le champ $F{Total_Population} un texte statique Les différents continents ont une population de : et un titre Test d'un SubDataset avec un graphe.

Pour nous assurer du bon fonctionnement de ce premier rapport, nous allons l'exécuter. Le résultat se présente comme suit :

II-3 - Création et configuration du SubDataset

Après avoir créé et testé le rapport principal, nous allons créer et configurer notre SubDataset.

Pour créer le SubDataset, il suffit de cliquer droit sur Document --> Add… --> Sub dataset.

L'écran suivant s'affiche :

Il suffit de cliquer sur le bouton Créer, les autres boutons à droite de cet écran seront accessibles :

Le nom par défaut SubDataset1 a été gardé pour le SubDataset.

Maintenant, nous allons saisir la requête SQL qui ramènera la population par continent. Les champs de cette requête serviront par la suite comme attributs du graphe.

SELECT Continent, Population FROM Statistiques

Pour saisir cette requête SQL, il suffit de cliquer sur le bouton Requête de l'écran précédent.

Après la création et le paramétrage du SubDataset, il ne reste plus qu'à le lier au graphe que nous allons créer dans la section qui suit

III - Création et configuration du graphe avec le SubDataset

Après avoir bien configuré le SubDataset, on passe à l'étape de la liaison de celui-ci avec notre graphe.

III-1 - Création du graphe

Nous allons ajouter un objet de type graphe à notre rapport sur la bande détail.

Une fois l'objet graphe glissé sur le rapport, plusieurs types de graphes s'affichent :

Nous allons par exemple choisir un graphe de type Diagramme circulaire 3D.

III-2 - Liaison du graphe avec le SubDataset

La dernière étape consiste à lier le graphe avec le SubDataset. Pour ce faire, nous allons cliquer droit sur le graphe et nous allons choisir Propriétès du tableau

Ensuite, nous allons sélectionner l'onglet Données du tableau et nous allons choisir dans sous-ensemble de données de la partie Exécution d'ensemble de données.

Jusqu'à maintenant, on n'a pas précisé la source de données de notre SubDataset. Dans l'onglet Exp. de connexion/Source de données nous allons choisir Utiliser l'expression de connexion dans la partie Expression de connexion/source de données. L'expression $P{REPORT_CONNECTION} s'affichera par défaut ce qui signifie que la source de données du SubDataset est celle utilisée dans le rapport principal.

Enfin, il ne reste plus qu'à de spécifier les Clés/Valeurs du graphe. Ces éléments sont accessibles via l'onglet Détails.

Il ne nous reste plus qu'à exécuter le rapport et contempler le résultat :

IV - Téléchargements

La base de données utilisée dans cet article ainsi que le Jrxml sont téléchargeables ici : Base et Jrxml.

V - Conclusion

Cet article a pour objectif de vous guider dans l'élaboration de graphe en utilisant un SubDataset. Il est susceptible d'une mise à jour. En effet, le SubDataset peut ne pas utiliser la même source de données que le rapport principal, chose qui peut être faite à l'aide d'une classe Java en passant un paramètre de type java.sql.connection. Un autre aspect qui pourrait faire l'objet d'une mise à jour de cet article est le passage de paramètre entre le rapport principal et le SubDataset.

VI - Remerciements

Mes remerciements vont à witch et Bruno2r pour leurs remarques et corrections orthographiques.