|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Bonjour,
Voici mon problème : J'ai réalisé un report sous BIRT qui m'affiche des données ordonnées par niveau. exemple : niveau 1 : pays niveau 2 : ville Lorsqu'on arrive au dernier niveau, on affiche la liste des destinataires associés à ce niveau. Actuellement je peux afficher le dernier niveau et les destinataires : Rennes : dest 1 dest 2 ... Nantes : dest 3 dest 4 ... ... Je peux afficher le premier niveau : France Rennes : dest 1 dest 2 ... Nantes : dest 3 dest 4 ... ... Mais il arrive parfois que le nombre de niveaux ne se limite pas à 2 mais à plus. Et c'est là que mon problème se pose. Je peux compter mon nombre de niveaux mais comment faire pour ajouter autant de lignes dans mon élément table qu'il y a de niveaux ? Existe-t-il un moyen d'ajouter, par du code, des header group ? Merci d'avance. Suolan. |
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Bonjour,
Vu qu'il n'y a pas de réponse de proposée, je suppose mon problème est impossible à résoudre. Ou alors personne n'a compris mon problème... Je laisse encore quelques jours avant de clôturer le sujet, on ne sait jamais Bon week end. Suolan. |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() ![]() Inscription : avril 2008 Messages : 1 053 ![]() |
C'est possible de coder ceci , mais je ne suis pas assez technique pour vous fournir le code exact.
Dans le principe , vous pouvez même créer tout en tableau rien que par du code. Mon astuce : 1) créer un objet caché qui vous compte les valeurs de chaque groupe ( ou un champs calculé dans votre SQL ) 2) coder sur le tableau ( sur le onRender du tableau je pense ) qqch du style si champs dans xyz , alors newGroupHeader etc. |
|
|
00
|
|
|
#4 | ||
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Bonjour,
Merci pour la réponse. Je sais maintenant que c'est possible. Dans un livre sur BIRT, j'ai vu qu'on pouvait ajouter des group dans le onPrepare de la Table. Le code est le suivant : Code :
2) var groupCondition = StructureScriptAPIFactory.createGroup(); => la fonction createGroup() pour la classe StructureScriptAPIFactory est inconnue. J'ai vérifé dans l'API. 3) this.addGroup(sortCondition); => d'où sort le 'sortCondition' ? J'en arrive à la conclusion que c'est faisable mais que même les livres sur le sujet ne savent pas comment faire (les auteurs ne savent pas coder ou je ne sais pas lire). Même ici, le sujet n'est pas fréquent voire inexistant. Le seul moyen est de créer le report entièrement par du code mais à partir de JAVA et non de BIRT. Ce que je ne veux pas faire. La manipulation de l'API BIRT n'est pas simple. Si jamais quelqu'un s'y aventure, je suis toujours intéressée car j'aimerais trouver une solution à mon problème. Merci d'avance. Suolan. |
||
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Inscription : avril 2008 Messages : 1 053 ![]() |
J'ai passée cette question à un développeur Actuate BIRT.
Par ailleurs , si vous etes sur Paris , je peux vous emprunter le bouquin de formation API BIRT officiel ( celui d'Actuate... ) |
|
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Merci pour votre aide (ça fait bizarre d'être vouvoyée quand même).
Et non, je ne suis pas sur Paris |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Bonjour,
J'ai abandonné l'idée d'ajouter un header group par du code. Mais j'ai une autre idée et par conséquent une autre question Est-il possible d'ajouter dynamiquement un champ Dynamic Text ? J'arrive maintenant à afficher ma hiérarchie. Pour le faire, j'ai créé 8 dynamic text (car je connais maintenant le nombre maximal de niveau dans une hiérarchie) contenant le libellé de mes niveaux. (config["lib1"] par exemple). Ce qui me donne de manière très moche pour une hiérarchie à 2 niveaux : France Rennes En blanc dans le report... Alors voilà, comment faire pour ne plus avoir ces blancs ? Je pense donc qu'il serait bien de créer des dynamic text que lorsqu'on en a besoin, mais comment faire ? Et si c'est possible comment ajouter ensuite la valeur que je souhaite afficher dans ces Dynamic Text créés ? Ou alors à l'inverse comment supprimer les dynamic text qui sont en trop et qui ont une valeur = "" (ou null si c'est plus pratique). J'espère avoir été claire et surtout qu'une réponse existe Merci d'avance et bonne soirée. Suolan. |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Bonjour,
J'ai trouvé comment faire J'ai spécifié les tailles des colonnes de mon tableau en pourcentage et je n'ai plus de blanc qui s'affiche... Simple en fait ! Mon rapport fonctionne très bien. Ma hiérarchie est nickel mais j'ai une super exception : Caused by: org.eclipse.birt.data.engine.core.DataException: A BIRT exception occurred: Error evaluating Javascript expression. Script engine error: TypeError: La valeur par défaut de l'objet est introuvable (DataSet[Niveaux].__bm_onFetch#2) Script source: DataSet[Niveaux].__bm_onFetch, line: 1, text: __bm_onFetch(). See next exception for more information. Je pense savoir d'où vient le problème mais je ne sais pas comment le résoudre. Pour faire ma hiérarchie j'ai créé deux dataSet : DataTable et Niveaux Ces dataSet sont utilisés dans des Tables : table1 et table2 table2 est "imbriquée" dans table1. J'ai besoin de certaines informations de la table1 dans le on Fetch de la table2. J'ai donc créé dans les propriétés Binding de table2 des colonnes pointant sur celles de table1. Ce qui me donne pour le binding de table2 : nom de colonne : ID_MER_NIV expression : row._outer["ID_MER"] Dans le on Fetch de table2, je fais appel à la colonne ID_MER_NIV de la manière suivante : Code :
if (dataSetRow["ID_C1"] == row["ID_MER_NIV"]) Les autres n'étant que du genre : Ce que je trouve bizarre c'est que mon report fonctionne comme il faut. Savez-vous pourquoi j'ai cette erreur ? Comment faut-il utiliser récupérer ma colonne ID_MER_NIV si ce que j'ai fait n'est pas correct ? Merci d'avance. Suolan. PS : Je suis toujours sur le même report mais le problème ne correspond plus au titre du sujet. Merci de me dire s'il faut que je clos celui-ci et que j'en rouvre un autre |
|
|
00
|
|
|
#9 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Bonjour,
Est-ce possible d'avoir le contenu COMPLET de ton OPEN et FETCH s'il te plaît ? |
|
|
00
|
|
|
#10 | ||
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
BiM,
Je n'ai rien dans le Open et dans le Fetch j'ai ceci : Code :
Merci, Suolan. |
||
|
|
00
|
|
|
#11 | ||||
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Bonjour,
J'ai fait quelques essais dans mon on Fetch. J'ai enlevé les lignes que l'on peut voir dans le post ci-dessus. J'ai mis ceci : Code :
Je remarque dans le preview que la valeur row._outer["ID_MER"] est affichée et peut bien être utilisée dans mon on Fetch. C'est pareil si j'utilise : row["ID_MER_NIV"] (colonne de Niveaux) qui est égale à row._outer["ID_MER"]. Si j'ajoute une condition : Code :
Mais j'obtiens toujours cette erreur-ci : Caused by: org.eclipse.birt.data.engine.core.DataException: A BIRT exception occurred: Error evaluating Javascript expression. Script engine error: TypeError: La valeur par défaut de l'objet est introuvable (DataSet[Niveaux].__bm_onFetch#13) Script source: DataSet[Niveaux].__bm_onFetch, line: 1, text:__bm_onFetch(). See next exception for more information.Error evaluating Javascript expression. Script engine error: TypeError: La valeur par défaut de l'objet est introuvable (DataSet[Niveaux].__bm_onFetch#13) Script source: DataSet[Niveaux].__bm_onFetch, line: 1, text:__bm_onFetch() at org.eclipse.birt.data.engine.core.DataException.wrap(DataException.java:114) at org.eclipse.birt.data.engine.script.ScriptEvalUtil.evaluateJSAsExpr(ScriptEvalUtil.java:552) at org.eclipse.birt.data.engine.script.JSMethodRunner.runScript(JSMethodRunner.java:79) at org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(DtEScriptExecutor.java:71) ... 97 more Apparemment je ne peux pas faire de condition sur ce champ sans avoir d'erreur. Si qui est bien dommage car il me faut ces conditions. Y-a-t-il une astuce, un truc qu'il faudrait faire ? Merci d'avance. Suolan. |
||||
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : mai 2005 Messages : 24 ![]() |
Bonjour,
Finalement j'ai réussi à faire ce que je voulais sans passer par mes config. J'ai réuni mes deux requêtes en une seule (avec des difficultés), ce qui fait que j'avais toutes les données qu'il me fallait dans une seule table. J'ai ensuite fait 9 groupes basés sur les 9 ID de mes niveaux. Ces groupes sont cachés si l'ID associé est null. Et c'est tout. J'ai galéré pour rien en fait, tout n'était que question de requête. Merci pour votre aide. Suolan. PS : est-ce que je mets le sujet à "résolu" même si la solution n'a plus de rapport avec ce que j'ai demandé à l'origine (création dynamique des header group) ? |
|
|
00
|
|
|
#13 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Ca reste une création dynamique de header. Enfin, c'est comme ça que je les fait également.
Donc, oui, tu peux mettre ton sujet à
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com