|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Bonjour,
Voici ce que je souhaite faire (sans succès pour l'instant) J'ai deux dataset alimentés convenablement. Et mon rapport se découpe ainsi : Table1 (alimentée avec le DataSet1 et groupée par un attribut A1) Table2 (alimentée avec le DataSet2) incluse dans chacun des groupes (avec des données correspondant à l'attribut A1). Problème : 1. Lorsque je fais "insert in layout" du DataSet2 pour créer la table 2 dans le groupe de la table 1, cela a l'air de fonctionner. Mais lorsque je génère le rapport, la table 2 n'apparait que pour le premier groupe de la table1. Pour les autres, c'est vide. 2. Impossible de filtrer la table2 pour qu'elle n'affiche que les valeurs du groupe (pourtant, il y a un attribut en commun). J'ai essayé la propriété "filter" sur la table, sans succès (il n'affiche meme plus rien au premier groupe). Je ne sais pas si j'ai été clair. N'hésitez pas à me poser des questions. Merci beaucoup PS : Ce que je veux faire est tout de même relativement simple, je pense que BIRT le propose mais impossible de trouver la bonne démarche à suivre |
|
|
00
|
|
|
#2 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Bonjour,
Et bien, tu travailles avec une version très ancienne de BIRT pour commencer. Ensuite, as-tu essayé de faire un joint dataset ? Qu'as-tu mis dans ton filtre ? |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Très ancienne, n'exagérons rien
"Joint DataSet" disais-tu. Où est-ce ? Je n'ai pas trouvé. Et comme filtre et bien j'ai mis une égalité sur l'attribut en commun |
|
|
00
|
|
|
#4 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Ca n'existe peut etre pas dans ta version. Et si ca existe c'est clic droit sur DataSets > New Joint DataSet.
Sinon, pour info, je suis sur un projet de plusieurs années et pourtant on change de version 2.0 puis 2.1 puis 2.2 et peut être 2.3. Et ca a dû me prendre une semaine ou deux pour les migrations difficiles. Je les faisais d'abord de mon côté avant de répercuter le tout chez tout le monde |
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Le problème est qu'on utilise beaucoup l'API de Birt pour la génération du rapport, et ça, ça change vraiment du tout au tout d'une version à l'autre, notamment les chemins relatifs des images contenues dans les rapports dans un contexte J2EE, bref, tout ce genre de petits détails.
On passe par des classes Java pour l'extraction des données et le rapport se fait avec des EventHandlers. On passe par l'appli J2EE pour la saisie des paramètres. Bref, on a choisi BIRT parce qu'il nous permet cette liberté. Du coup, on utilise le BIRT designer juste pour mettre en forme. - En effet, je n'ai pas cette option permise (Joint data set) Merci de m'avoir répondu malgré ma vieille version |
|
|
00
|
|
|
#6 | |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Citation:
Enfin bon, c'est ton choix, mais tu as peut être un peu trop peur Ceci dit, ca ne dit pas ce que tu as mis dans ton filtre. Parce que ca m'étonne qu'il ne fonctionne pas |
|
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Je viens d'installer le BIRT Designer 2.1.1 et j'ai les "Joint DataSet". Qui plus est, les rapports générés sont compatibles avec mon BIRT Engine, c'est la fête
![]() Bon je vais chercher comment cela fonctionne. Merci en tout cas |
|
|
00
|
|
|
#8 |
|
Candidat au titre de Membre du Club
![]() Inscription : mai 2007 Messages : 42 ![]() |
Salut. Une autre solution à ton problème serait l'utilisation des sous rapports. Cela t'évitera du coup une liaison au niveau du designer. Moi personnellement, je résoud le pb en définissant un paramètre que j'initialise à la création d'une instance de groupe. Je fais ensuite le tri sur ce paramètre et non sur une colonne du rapport. Cela marche très bien au cas où on a des petits pbs comme le tien (J'ai par ailleur déjà connu les pbs similaires sur une version supérieure de BIRT).
|
|
|
00
|
|
|
#9 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Il y a pas mal de choses qui n'existent pas dans les anciennes versions de BIRT. Déjà que je me rappelle de problèmes mémoire avec les tables imbriqués en 2.0.
Alors la "notion" de sous-rapports, je ne suis pas sûre que ce soit une bonne idée d'en parler à ce stade En plus, c'est beaucoup trop complexe pour quelquechose d'aussi simple. Si je devais avoir un sous-rapport à chaque fois que je fais ce genre de manipulation, je crois que j'irais me suicider (c'est une expression évidemment |
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Quelqu'un a une explication en français des Joint DataSet sous la main ?
Je ferai le tour de l'international demain matin |
|
|
00
|
|
|
#11 |
|
Membre éclairé
![]() ![]() Inscription : novembre 2005 Messages : 385 ![]() |
Joint (merge) deux datasets (pas un UNION). un peu à la manière d'une jointure en base de données.
Par exemple, vous avez 2 datasets avec 4 colonnes chacun dont un champ en commun. Le join dataset permet de fusionner les deux datasets pour en créer un avec 8 colonnes. Si vous utiliser une base de données comme source de données, je vous conseille de fusionner vos deux requêtes en SQL directement plutôt que d'utiliser ce composant. |
|
|
00
|
|
|
#12 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Le principe, ok.
Mais il n'affiche rien ce satané Joint DataSet C'est pourtant super simple ce que je veux faire : DataSet1 : Type jouet | Nom du jouet | couleur | matière | taille T1 Jouet1.1 rouge carton gros T1 Jouet1.2 orange paille petit T2 Jouet2.1 vert métal petit T2 Jouet2.2 bleu coton moyen DataSet2 : Type jouet | début d'activité | fin d'activité T1 08h10 09h00 T1 19h00 22h00 T2 12h00 12h30 T2 14h30 15h00 Je veux afficher le DataSet1 et pour chaque type de jouet, afficher les données du DataSet2 correspondantes. Bon l'exemple est super simplifié, il y a beaucoup plus de données (colonnes et lignes, il y a 10x plus de lignes dans le DataSet2 par rapport au 1) mais c'est ça l'esprit. T1 Jouet1.1 Rouge Carton Gros Jouet1.2 orange paille petit 8h10 09h00 19h00 22h00 T2 Jouet2.1 Vert Métal Petit Jouet2.2 bleu coton moyen 12h00 12h30 14h30 15h00 etc. Alors ce que j'arrive à faire avec les DataSet normaux, c'est ceci : T1 Jouet1.1 Rouge Carton Gros Jouet1.2 orange paille petit 8h10 09h00 19h00 22h00 T2 Jouet2.1 Vert Métal Petit Jouet2.2 bleu coton moyen Vous remarquerez qu'il manque les infos du DataSet2 sur le T2 (pourtant il marque les libellés des colonnes du DataSet2 mais pas les données). Donc, en suivant vos conseils, j'ai créé un Joint DataSet (avec l'attribut "Type de Jouet" comme liaison) en "Inner Join" Tout d'abord, si j'affiche mon DataSet1 puis le 2 puis le Join, le Join ne donne aucune donnée. Si je supprime le 1 et le 2 et que je n'affiche que le Join, il s'affiche avec un nombre de lignes hallucinant (la multiplication des deux DataSet en fait). |
|
|
00
|
|
|
#13 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Bon alors, une fois l'énorme tableau afficher, j'ai regroupé :
Tout d'abord par Type de jouet : T1 Jouet1.1 Rouge Carton Gros 8h10 09h00 Jouet1.1 Rouge Carton Gros 19h00 22h00 Jouet1.2 orange paille petit 8h10 09h00 Jouet1.2 orange paille petit 19h00 22h00 T2 Jouet2.1 Vert Métal Petit 12h00 12h30 Jouet2.1 Vert Métal Petit 14h30 15h00 Jouet2.2 bleu coton moyen 12h00 12h30 Jouet2.2 bleu coton moyen 14h30 15h00 Ce qui ne va toujours pas Alors je peux encore grouper par Jouet : T1 Jouet1.1 Rouge Carton Gros 8h10 09h00 19h00 22h00 Jouet1.2 orange paille petit 8h10 09h00 19h00 22h00 T2 Jouet2.1 Vert Métal Petit 12h00 12h30 14h30 15h00 Jouet2.2 bleu coton moyen 12h00 12h30 14h30 15h00 Ce qui ne va toujours pas non plus puisque l'information du DataSet 2 est répétée à chaque coup. Une solution ? |
|
|
00
|
|
|
#14 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Hum, tu utilises le Designer 2.1 avec l'engine 2.0 ?
Il est là le problème ! L'engine 2.0 ne pourra pas interpréter des éléments qui n'apparaissent qu'à la version suivante. Il n'est pas devin en clair Donc, quand on change de version, c'est pas à moitié qu'il faut le faire. |
|
|
00
|
|
|
#15 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Non en fait j'ai la version 2.1.1, je m'étais trompé
De toutes façons, si tu regardes mon message précédent, je ne vois pas comment le Joint Data Set peut m'aider, à moins que je n'ai pas saisi une subtilité. Si quelqu'un pouvait m'expliquer la différence entre le "Inner Join", "Left Outer Join" et "Right Outer Join" Non, la manière la plus simple et la plus propre serait d'inclure un dataSet dans un autre comme dans mon premier exemple. Le seul problème est qu'il n'affiche le second DataSet que pour le premier groupe du DataSet1. Tout mettre dans un meme dataSet serait une solution, mais horriblement lourde, moche et mal optimisé |
|
|
00
|
|
|
#16 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Bon alors, si j'étais toi je ferais comme suit :
Ca devrait très bien fonctionner |
|
|
00
|
|
|
#17 | |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Merci
Malheureusement, c'est le même problème mais à l'envers. Citation:
C'est peut-être un bug de BIRT |
|
|
|
00
|
|
|
#18 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Non non y'a pas de raisons.
Peux-tu générer le PDF que tu as actuellement avec en dessous de ton résultat l'affichage de tes DataSets, tu les glisses simplement à la suite Merci. |
|
|
00
|
|
|
#19 |
|
Membre du Club
![]() Développeur Java Inscription : juillet 2004 Messages : 204 ![]() |
Ben en fait, ce ne sont pas des jouets et il y a des dizaines de colonnes.
Mais je vais te décrire exactement ce que cela affiche actuellement : ------------------------------------------ T1 Nom || Couleur || Matière || Taille Jouet1.1 || Rouge || Carton || Gros Jouet1.2 || orange || paille || petit Debut || Fin 08h10 || 09h00 19h00 || 22h00 T2 Nom || Couleur || Matière || Taille Debut || Fin 12h00 || 12h30 14h30 || 15h00 ------------------------------------------ La même chose s'affiche lorsque je mets en place ma première solution, c'est à dire : Le DataSet2 inclu dans le footer du groupe du DataSet1 En résumé : Le résultat est correct pour la premier groupe mais pas pour les suivants. Voici maintenant les DataSet DataSet1 : Type || Nom || Couleur || Matière || Taille T1 || Jouet1.1 || Rouge || Carton || Gros T1 || Jouet1.2 || orange || paille || petit T2 || Jouet2.1 || Vert || Métal || Petit T2 || Jouet2.2 || bleu || coton || moyen DataSet2 : Type || Debut || Fin T1 || 08h10 || 09h00 T1 || 19h00 || 22h00 T2 || 12h00 || 12h30 T2 || 14h30 || 15h00 EDIT : J'ai modifié le résultat rendu (le DataSet2 s'affiche bien mais pas le DataSet1) dans les groupes suivant le premier. Dans ma solution c'était l'inverse ; tout simplement parce que c'est le DataSet2 que j'avais inclu dans le DataSet1 et non l'inverse :p |
|
|
00
|
|
|
#20 |
![]() ![]() Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT Inscription : janvier 2005 Messages : 7 299 ![]() |
Tu ne veux toujours pas dire ce que tu as mis dans ton filtre ?
De mon côté, j'ai essayé ca marche très bien... (dans l'entête du groupe et dans le pied aussi). |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com