Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > BIRT
BIRT Forum d'entraide sur BIRT (Business Intelligence and Reporting Tools). Avant de poster --> FAQ BIRT,Tutoriels BIRT
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 14h10   #1
Invité de passage
 
Homme cyril Buisset
Ingénieur d'étude
Inscription : décembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme cyril Buisset
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'étude
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2011
Messages : 21
Points : 0
Points : 0
Par défaut Arborescence dans rapport BIRT

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
Hawaisunset est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h15   #2
Invité de passage
 
Homme cyril Buisset
Ingénieur d'étude
Inscription : décembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme cyril Buisset
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'étude
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2011
Messages : 21
Points : 0
Points : 0
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
Hawaisunset est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h21   #3
Invité de passage
 
Homme cyril Buisset
Ingénieur d'étude
Inscription : décembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme cyril Buisset
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'étude
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2011
Messages : 21
Points : 0
Points : 0
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
Hawaisunset est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 16h26   #4
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
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+
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 18h09   #5
Invité de passage
 
Homme cyril Buisset
Ingénieur d'étude
Inscription : décembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme cyril Buisset
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'étude
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2011
Messages : 21
Points : 0
Points : 0
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
Hawaisunset est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 20h32   #6
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
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 :
1
2
3
var level = row["LEVEL"];	
var indentation=(20*level)+"px";
this.getStyle().marginLeft=indentation;
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/01/2012, 14h11   #7
Membre Expert
 
Inscription : avril 2008
Messages : 1 053
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 1 053
Points : 1 156
Points : 1 156
Par défaut option

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
Stefan C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 14h29   #8
Invité de passage
 
Homme cyril Buisset
Ingénieur d'étude
Inscription : décembre 2011
Messages : 21
Détails du profil
Informations personnelles :
Nom : Homme cyril Buisset
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'étude
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : décembre 2011
Messages : 21
Points : 0
Points : 0
Par défaut je n'y arrive pas

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 ??????
Hawaisunset est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2012, 18h10   #9
Membre confirmé
 
Homme
Consultant en Business Intelligence
Inscription : mai 2009
Messages : 186
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mai 2009
Messages : 186
Points : 289
Points : 289
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:
Code :
this.getStyle().paddingLeft="10px";
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 Ou à la rigueur je créerai un petit exemple rapide et le posterai, tu travailles avec quelle version de BIRT?

A+
donino est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h38.


 
 
 
 
Partenaires

Hébergement Web