Bonjour,
Destiné aux débutants, ce tutoriel a pour objectif de vous présenter une méthode pour générer dynamiquement des rapports BIRT :
Génération de rapports BIRT à l'aide de la 'BIRT Design Engine API', par Florian Cornolle
Bonne lecture
Bonjour,
Destiné aux débutants, ce tutoriel a pour objectif de vous présenter une méthode pour générer dynamiquement des rapports BIRT :
Génération de rapports BIRT à l'aide de la 'BIRT Design Engine API', par Florian Cornolle
Bonne lecture
Petite erreur dans le tutoriel :
"- le moteur de visualisation de rapports. Il repose sur la REAPI : Report Design Engine API. "
Report Design Engine -> supprimer le "design".
Me semblait bien en lisant que ça faisait long
Et j'oublie de remercier pour le tutoriel, c'est vraiment sympa de partager ses connaissances. Merci.
Hello merci pour la correction ! Je viens de rectifier l'erreur.
Ayant bénéficié depuis quelques années des tutoriels présents sur développer.com, c'est la moindre des choses que j'apporte ma maigre pierre à l'édifice.
A tantôt!
Bonjour, je suis sur ce tutoriel depuis ce matin, cependant je rencontre l'erreur suivante :
"Exception in thread "main" org.eclipse.birt.report.model.api.command.NameException: The name "id" duplicates an existing name. Please choose a different name.".
J'ai essayé de changer "id" dans la HashMap "mappingNomColonneLibelle", mais à ce moment là, je rencontre la même erreur sur "prix".
L'erreur se produit sur le "design.getBody().add(tableHandle);", et je crois que c'est lié à la HashMap "mappingNomColonneLibelle".
à noter que j'utilise la base de données Caché Intersystems et non Postgres, je ne sais pas si ça a une influence...
Auriez-vous une idée de ce qu'il se passe s'il vous plaît?
Merci,
Jeff
Bonjour,
Je pense qu'il y a une erreur dans le tutoriel :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 while (iterateurListeColonne.hasNext()) { valeur = iterateurListeColonne.next(); libelle = mappingNomColonneLibelle.get(valeur); cs1 = StructureFactory.createComputedColumn(); cs1.setName(valeur); cs1.setExpression("dataSetRow[\"" + valeur + "\"]"); computedSet.addItem(cs1); }
A la place de :
Il voulait probablement écrire :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part cs1.setName(valeur);
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part cs1.setName(libelle);
Si cette solution corrige ton problème, je transmets à l'auteur
Merci pour la rapidité, cependant, cela ne corrige pas le problème
Et j'ai observé ce matin qu'en mettant en commentaire "design.getBody().add(tableHandle);", le fichier .rptdesign était bien écrit et contenait ce qu'il fallait mis à part la table que je souhaite intégrer au rapport.
Donc c'est clairement l'écriture de la table dans le .rptdesign qui pose problème...
Après débuggage intensif, voici la correction à apporter...
A un moment on a :
Au lieu de :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part LabelHandle label1 = factory.newLabel(valeur);
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part LabelHandle label1 = factory.newLabel(libelle);
J'avertis l'auteur, merci beaucoup !
Waow, ça marche!!
Merci beaucoup beaucoup à toi
Bon, après tests, il apparaît qu'il fallait bel et bien laisser
Sinon, on se retrouve avec des erreurs de type "Invalid bound column name".
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part cs1.setName(valeur);
A part ça, c'est bon
Salut !
Désolé j'arrive un peu tard pour apporter des éclaircissements sur le sujet.
Le problème survient sur la version 2.5.2 mais n'apparaît pas sur les versions 2.3.2.1. et 2.3.2.2.
Cela est lié au fait que toute valeur de l'attribut 'name' associé à un objet implémentant l'interface IReportElement doit être unique (cet objet est référencé par son nom).
En partant de ce principe :
Lorsqu'on instancie un LabelHandle comme ci-dessous :
On attribut le nom 'valeur' à l'instance de Label associé à l'objet label1 lors de son instanciation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part LabelHandle label1 = factory.newLabel(valeur);
De même lorsqu'on instancie ensuite un DataItemHandle comme ci-dessous :
On attribut le nom 'valeur' à l'instance de Data associée à l'objet data lors de son instanciation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part DataItemHandle data = factory.newDataItem(valeur);
Alors comme il s'agit de deux objets dont les classes implémentent IReportElement :
- en version 2.5.2 : une exception est générée
- en version 2.3.2.1 et 2.3.2.2 : le nom est automatiquement modifié (le nom de base est conservé et un numéro est ajouté à côté)
Si vous utilisez la version 2.5.2, pour résoudre ce problème le plus simple pour ce tutoriel est de remplacer (par exemple)
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part DataItemHandle data = factory.newDataItem(valeur);
Code : Sélectionner tout - Visualiser dans une fenêtre à part DataItemHandle data = factory.newDataItem("data_"+valeur);
On peut aussi utiliser la solution de BIM qui consiste à agir sur le LabelHandle (le tout c'est d'avoir des noms différents).
Je vais modifier le tutoriel pour prendre en compte ce problème.
Merci.
Bonjour,
Le tutoriel a été mis à jour.
Bonne journée.
Je suis débutant Birt.
Mon problème est de pouvoir générer un rapport à partir d'une source EMF ECORE data source et non JDBC avec l'API Report engine et/ou Design engine Java.
Merci d'avance de votre aide.
Bonjour,
Je suis débutante BIRT, Je veux savoir s'il existe une possibilité d'intégration dans une application Web et une application Eclipe RCP en même temps.
Merci
très bon tutoriel, Mercii beaucoup
Merci beaucoup pour ce tutoriel intéressant
Bonjour,
J’ai suivi le tutoriel a la lettre, mais j'ai un problème à la dernière étape qui est "Test du script et du fichier généré" j'ai bien le ficher "testBIRT.rptdesign" qui est généré, mais pour fenêtre juste après dans mon cas elle est vide ?!!
Je ne comprends pas pourquoi (tous les paramétré et la base de données son bien configuré)
Merci de vos commentaires de correction.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager