|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 5 ![]() |
Voici mon problème sur lequel je m'arrache les cheveux depuis quelques jours:
Je souhaite construire un rapport qui aura la forme suivante: pour agence1: crosstab pour agence2: crosstab pour agence3: crosstab ... Bien entendu chaque crosstab n'incluant que les données relatives à l'agence en cours Ce type de structure est elle réalisable ? Dans le cas d'un dataset classique, ca ne pose pas de souci, mais quand il s'agit de faire les regroupements par agence à partir d'un data cube, les choses se corsent... Merci de m'aider !! Merci |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Mijoro RakotonirinaInscription : octobre 2007 Messages : 59 ![]() |
Bonjour!
Si je comprends très bien, vous voulez créer un seul report incluant 3 crosstab différents. Si oui, c'est possible. Vous n'avez qu'à créer votre propre template avec 3 crosstab. Puis, vous allez créer 3 datasets différents ayant chacun sa propre requette. Avec les 3 nouveaux datacubes, vous allez paramettrer chaque ligne et chaque colonne des crosstabs. Cordialement rotsilaina. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 5 ![]() |
Merci pour votre réponse, mais je pense que je n'ai pas été assez clair dans la description de mon probleme:
Il n'y a qu'un seul dataset qui renvoi un client, une type , une agence, un montant. mon cross tab a sur un axe le client et sur l'autre axe le type. le montant étant la mesure. Je n'ai pas 3 crosstab a créer. Ils doivent etre générés dynamiquement. Si il y a 3 agences alors il y aura 3 crosstab, si il y a 10 agences, il y aura 10 crosstabs (1 par agence). Pour gérer cette itération, le composant list me parait adapté. La dimension agence est une dimension de mon data cube, mais qui n'est pas utilisé dans mon cross tab, je veux m'en servir comme regroupement. Cependant j'ai l'impression que Birt gere mal, pour ne pas dire pas du tout, les listes (regroupements) à partir de cubes. Cela provient peut etre du fait que les cross tab n'ont été ajoutés que récemment... Si quelqu'un à une idée |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() ![]() Consultant informatique Inscription : mai 2007 Messages : 893 ![]() |
Bonjour,
Bon alors ... Citation:
Citation:
![]() Pour le reste c'est extrèment simple il n'existe pas de liaison possible pour les Data Cube utilisé dans BIRT (en 2.2.0) Conclusion dans l'absolue cela risque d'être dur, la solution consiste à utiliser JasperReports qui est la solution idéale !!! pour les tableaux croisés dynamique, avec l'imbriquation d'un sous-rapport contenant le tableaux croisés. Par contre si tes colonnes "type" sont prédéfinies (statique), et que tes "clients" sont non prédéfini (dynamique) il te suffit d'utiliser un tableaux classique. Ca marche trés bien et le résultat sera identique ![]() Cordialement Lazarel |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 5 ![]() |
J'ai réussi a résoudre le problème en passant pas une variable JavaScript.
Il faut créer une variable dans la méthode initialize du rapport (onglet script) ex: codeAgence=null Créer une table à partir d'un dataSet puis définir de manière classique le binding et le groupe. Insérer ensuite le cross tab dans la table. (Bien entendu, a cette étape, il n'y a aucun lien entre le groupe de la liste et le cross tab. On aura alors un cross tab pour chaque rupture de la liste (mais a chaque fois identique). Selectionner la ligne de la table dans laquelle se situe le cross tab et dans la méthode onRender affecter à la variable créée la valeur du champs qui sert de regroupement dans la table ex: codeAgence = row["DTW_ID_AGENCE"] Ca y est le tour est joué !! Merci a tous de votre aide !! |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Peux-tu décrire précisément la procédure que tu as mis en place ?
J'ai exactement le même problème. J'ai 2 listes imbriquées (ANNEE et LIEU) et à l'intérieur de la seconde liste, je souhaite afficher un tableau croisé. J'ai crée un dataset me retournant pour chaque [ANNEE, LIEU, CATEGORIE D'ENTITE] le nombre d'entité correspondant. J'ai crée un datacube basé sur ce dataset. J'ai crée un crossstab basé sur ce datacube. J'utilise 2 variables javascript : CURRENT_ANNEE et CURRENT_LIEU_COD. Ces variables sont fonctionnels car j'arrive à afficher des tableaux basé sur des requêtes paramétrées. Comment as-tu paramétré ton dataset, ton datacube, ton crosstab ? merci |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2007 Messages : 5 ![]() |
Si j'ai bien compris ton problème, tu as deux listes imbriquées et ton crosstab est a chaque fois identique car tu n'arrives pas a le lier aux elements de ta listes.
IL faut que tu initialises tes variables dans le initialize comme écrit dans le post précédent. Ensuite que tu affectes à ces variables la valeur de tes listes (dans la méthode onRender de ta table, dans le detail, la ou se trouve ton crosstab ex: var1 = ??? var2 = ??? , voir post précédent) et enfin, il faut que tu appliques un filtre sur ton crosstab afin de ne "laisser passer" que les données égales à tes 2 variables (j'ai oublié de le préciser ds le post précédent). Bon courage ! |
|
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Merci.
Ça fonctionne. ![]() Par contre j'ai un maintenant autre problème. Comme je l'ai dit, j'ai 2 listes imbriquées : la première itère sur les années et la seconde sur des lieux. Mon crosstab représente l'évolution du nombre d'entités par type d'entités (ligne) pour le lieu courant. Les entêtes de colonnes sont donc des années. Par exemple, si je suis sur l'année 2005 dans la liste, le crosstab va afficher l'évolution de 1995 à 2005 ([année courante - 10; année courante]). Code :
![]() Du coup, j'ai ajouté le lieu dans la dimension "type" et je rend le champ lieu invisible. Ainsi, je peux filtrer les données pour le lieu courante. Et là, c'est un peu moche car la colonne contenant le champ lieu s'affiche (sans la valeur du lieu), ce qui décale le type d'entités assez grossièrement. Le composant "Datacube" est relativement jeune, ce qui peut expliquer ses manques. J'espère que dans les prochaines versions, ce composant sera enrichie de nouvelles fonctionnalités. Merci encore tony pour ton aide
|
||
|
|
00
|
|
|
#9 | ||||
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Finallement en cachant (visibility = false) les niveaux à filtrer et en définissant la largeur des cellules à 0 cela donne l'affichage escompté.
Voici la structure : Code :
Et le tour est joué ![]() Code :
|
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com