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.