|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() cyril BuissetIngénieur d'étude Inscription : décembre 2011 Messages : 21 ![]() |
Bonjour,
Je dois créer un tableau dans un rapport avec BIRT sous la forme d'une arborescence de la forme Code | Description | reference toto10 description toto10 reference toto10 toto11 toto12 toto13 toto131 toto132 toto133 toto134 toto14 toto141 toto20 toto30 y'a-t'il une solution directement paramétrée dans l'outil BIRT pour coder ça ou faut-il bidouiller ? par avance merci pour votre aide |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() cyril BuissetIngénieur d'étude Inscription : décembre 2011 Messages : 21 ![]() |
je précise que c'est une arborescence avec les mêmes données dans chaque ligne mais il y a un décalage entre chaque ligne quand on passe de l'enregistrement père au fils !
j'spr être clair |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() cyril BuissetIngénieur d'étude Inscription : décembre 2011 Messages : 21 ![]() |
apparemment dans mon 1ier mail, l'édition a perdu le décalage des données de mon exemple, voici ce qu'il fallait lire :
Code | Description | reference -toto10 description toto10 reference toto10 --toto11 --toto12 --toto13 ---toto131 ---toto132 ---toto133 ---toto134 --toto14 ---toto141 -toto20 -toto30 |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Consultant en Business Intelligence Inscription : mai 2009 Messages : 186 ![]() |
Salut,
habituellement, créer des groupes dans la table sur les différents niveaux de la hérarchie répond à ce genre de besoin, à condition que le nombre de niveaux soit défini, que la hiérarchie soit équilibrée (càd que tous les niveaux soient toujours tous définis), et que les niveaux agrégés n'aient pas d'existence propre en dehors de leur fonction d'agrégat. Il aurait peut être fallu un peu plus d'infos sur comment cette hiérarchie arrive dans le dataset (en particulier si il y a un lien "père-fils") mais l'exemple donné ne semble pas rentrer dans ce cas de figure, à mon avis tu peux donc t'orienter vers le mode bidouille: par exemple créer un "Dynamic text" dans la colonne souhaitée de la table, et créer une formule qui indente avec des espaces le code produit en fonction du "niveau" de ce produit. Ce sera assez simple si tu peux déjà disposer de ce niveau dans le dataset de la table. A+ |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() cyril BuissetIngénieur d'étude Inscription : décembre 2011 Messages : 21 ![]() |
merci beaucoup pour ta réponse;
Quand je lance ma requête via SQL Developper, avec la fonction SQL adéquate (qui met un nombre de blancs devant le champ selon le niveau), j'ai bien le décalage dans mon résultat de requête; pourquoi je ne visualise pas ce décalage quand j'utilise cette même requête dans mon rapport BIRT? peut-être que BIRT ne reconnait pas les blancs devant le champ en question ? merci |
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Consultant en Business Intelligence Inscription : mai 2009 Messages : 186 ![]() |
Oui BIRT enlève les espaces à quasi tous les niveaux. Du coup le moyen le plus fiable est à mon avis de le faire en modifiant le style dans la cellule de la table: transporter ce niveau d'indentation ("LEVEL") dans le dataset et une colonne cachée de la table (option "visibility") , puis sur le champs à indenter->onglet script->évènement onRender:
Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Inscription : avril 2008 Messages : 1 053 ![]() |
Il y a une option depuis la 2.6 il me semble :
Dans les propriétés d'un Text : General : Whitespace : Auto/No Wrapping/Normal/Preformatted. Sinon la solution proposée c'est top , mieux vaut mettre ceci dans des Styles CSS d'ailleurs.
__________________
BIRT / Actuate Nouveau ! : Actuate v11 LIVE avec cubes en mémoire, dashboard analythique, accès mobile et exports Office intélligents! Télécharger Evaluation ici : http://www.birt-exchange.com/be/downloads/ Nouveau ! : Tutoriel/Formation sur comment installer et utiliser la version d'évaluation Actuate v11 Vous former ici : http://www.birt-exchange.org/org/wik...h_BIRT_iServer |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() cyril BuissetIngénieur d'étude Inscription : décembre 2011 Messages : 21 ![]() |
Bonjour et merci pour vos réponses;
j'ai tenté de faire comme vous le disiez : - apparemment je n'ai pas cette propriété "Whitespace" avec ma version de BIRT - J'ai essayé aussi de faire avec le code dans le script onRender sur le champ de table dont je veux voir apparaitre le décalage selon le level: var level = row["LEVEL"]; var indentation=(20*level)+"px"; this.getStyle().marginLeft=indentation; mais ça ne marche pas; pour essayer, sur ce même champ de table, j'ai voulu juste mettre le code : this.getStyle().marginLeft=10; (c'est à dire avec une valeur en dure = '10') dans le script onRender du champ mais ça ne change rien ?????? |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Consultant en Business Intelligence Inscription : mai 2009 Messages : 186 ![]() |
Salut,
la syntaxe c'est plutôt avec l'unité (donc this.getStyle().marginLeft="10px"; ), mais même avec ce que tu as mis ça devrait fonctionner, et prendre dans tous les cas la priorité sur les éventuelles autres définitions de marge que tu as pu renseigner dans les propriétés, dans un style ou une classe CSS. La seule chose que je vois c'est que tu as dû renseigner l'évènement "onRender" de la cellule et non pas celui du champs, à mon avis c'est ça. Je conseille d'utiliser la fenêtre "Outline" pour bien visualiser dans l'arborescence l'élément du rapport qui est sélectionné, et bien confirmer que tu travailles sur l'élément de type Data("myField"), pas sur la cellule qui le contient. Sinon tu peux aussi utiliser le onRender de la cellule mais dans ce cas utiliser le paddingLeft, ça reviendra au même: Dis nous si cela résout le problème. Si ça ne fonctionne toujours pas essaye de poster sur le forum un petit zip d'un rapport de test et son contexte avec quelques données, on pourra directement te donner la solution A+ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com