Sur un projet intégrant BIRT j’ai été confronté à ce problème. Je génère des rapports complexes utilisant des composants et des datasets (jeu de données) définis dans une librairie. Je désire afficher un composant uniquement si le dataset lié contient des données. L’opération en soit est simple mais dans la mesure où le composant est défini dans une librairie qui en contient plusieurs, je cherchais la solution la plus générique possible. En effet le composant sera utilisé dans plusieurs rapports et il pourra évoluer. Il faudra que les opérations de mise à jour soient le plus simple possible.
Tout d’abord il faut distinguer deux situations:
- Les datasets ne contenant qu’un jeu de données (caractéristiques d’un client par exemple…)
- Les datasets multi-lignes (liste de clients…)
J’ai utilisé Birt Designer pour configurer les différents éléments.
- Dataset à un enregistrement
Le principe consiste à rajouter au dataset une colonne qui traduira le caractère visible ou non du composant lié. Pour cela il faut éditer le dataset et créer une computed columns en cliquant sur new
Il faut ensuite renseigner:
- le nom de la colonne (isVisible par exemple)
- Son type: boolean
Il faut maintenant construire l’expression permettant de tester les autres colonnes:
- cliquer sur fx
- Construire l’expression en testant les colonnes souhaitées
2. Dataset multi-lignes
Il faut au préalable créer une computed column ayant les attributs suivants:
- name : length
- Data type : integer
- Aggregation : COUNT
On crée ensuite une colonne isVisible qui teste la valeur de la colonne lenght avec l’expression row["length"]!=0
3. Statut visible du composant
Dans l’onglet properties, dans la rubrique visibility
- cocher la case « Hide element »
- Dans le champs expression saisisser !row["isVisible"]
Si la valeur retournée est vrai le composant n’est pas affiché dans le rapport.





