|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 7 ![]() |
Bonjour, je suis nouveau sur le forum et nouvel utilisateur de BIRT également et je bloque sur un petit problème j'imagine.
Voila, je suis parti d'un fichier XML, tout va bien, j'arrive à afficher les données que je veux provenant de ce fichier, mais je voudrais ajouter une colonne. Dans cette colonne, je voudrais faire un calcul selon plusieurs critères : Ce que je veux, c'est que par rapport à la valeur contenue dans une autre colonne, je fasse un calcul précis J'ai pour cela fait un switch sur mes différentes valeurs. Cependant, je n'arrive pas à faire en sorte d'afficher les calculs que je veux dans ma colonne d'arrivée. Voici mon code (si ça peut vous aider) : Citation:
Je n'arrive pas à afficher dans la colonne d'arrivée le résultat de ce calcul. Pouvez-vous m'aider ? Merci par avance. |
|
|
|
00
|
|
|
#2 | ||
|
Membre confirmé
![]() Nicolas Vives Inscription : avril 2010 Messages : 178 ![]() |
Bonjour,
Ton problème est simple mais il va falloir être précis sur les objets BIRT que tu utilises pour implémenter ta règle de gestion. Tu peux la mettre à plusieurs endroits, mais d'après ce que tu as dit, je pense que le plus simple est d'utiliser ton data set tel quel dans un tableau, et de rajouter un data binding avec ta règle, dans le tableau. Ca donne ça :
Code :
Ca devrait suffire à ton problème, si tu as d'autres questions n'hésite pas. |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 7 ![]() |
Merci beaucoup de la réponse, effectivement ça fonctionne mieux comme ça.
J'ai maintenant un autre soucis (oui oui, je suis un jeune utilisateur de l'outil), et j'aimerais savoir comment agréger les données pour en faire des sommes ? Je m'explique : Dans mon tableau de départ, j'ai des éléments qui se répètent selon les lignes. En fait, pour 2 colonnes, les données sont les mêmes, et c'est pour les colonnes suivantes qu'elles changent. Ce que je voudrais, c'est que pour les mêmes valeurs des deux premières colonnes (qui sont symétriques, les valeurs sont reliées), on fasse la somme du calcul que vous m'avez aidé à implémenter. Je ne sais pas si c'est très clair, si vous voulez plus de détails pour de l'aide, j'essaierai de vous donner un exemple de ce que je veux. Merci ! |
|
|
00
|
|
|
#4 |
|
Membre confirmé
![]() Nicolas Vives Inscription : avril 2010 Messages : 178 ![]() |
Ok, ce sont deux notions des tableaux (pas des data set) que tu dois utiliser : les groupes et les agrégations.
Tu as ton tableau associé a ton data set. Dessus, tu définis un ou plusieurs groupes : les groupes sont des ruptures effectuées parmi les lignes de détail, en groupant ces lignes selon un critère que tu définis (la valeur d'une colonne, la concaténation de plusieurs valeurs, etc). Pour chaque groupe ton tableau sera agrémenté de lignes de "header" et "footer" de groupe ; ces lignes ne sont créées qu'une fois par groupe, ça te permet d'afficher les totaux. Pour le calcul des sommes, utilises les agrégations fais un glisser-déposer de l'objet "aggregation" de la palette sur ton tableau. Tu définis ton agrégation sur une donnée du data set, en choisissant une opération à appliquer (somme, moyenne), et en choisissant le niveau de groupe à appliquer à l'agrégation : si tu choisis tout le tableau, tu n'auras qu'une valeur pour tout le tableau ; si tu choisis un groupe, tu auras une valeur par instance différente du groupe. T'inquiètes, en bidouillant, tu verras vite, c'est très visuel. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 7 ![]() |
Ok, ça fonctionne merci beaucoup !
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 7 ![]() |
J'ai une autre petite question.
J'ai créé un groupement de mes lignes selon une condition et j'ai demandé de faire des calculs dessus (j'ai compté le nombre de valeurs qu'il y avait dans une colonne et fait une addition des valeurs qu'il y avait dans une autre colonne selon que les lignes aient les mêmes expressions dans une troisième colonne). Bref, un agrégat. Petite chose importante, j'ai retiré les lignes où j'avais mes données brutes, parce que ça n'est que la somme qui m'intéresse. Donc voila ce que je voudrais : Je voudrais que pour mes agrégats, faire un calcul qui serait le suivant : Selon la valeur qu'il y a dans l'agrégat de ma colonne où je fait le dénombrement, j'aimerais donner un coefficient multiplicateur à l'agrégat de la colonne où je fais la somme des valeurs. En gros : si("colA"==4), alors colB*3.7, sinon si("colA"==2), alors colB*7.1, sinon colB. (style algorithmique) Mais seulement pour les valeurs des agrégats, sinon je n'ai aucun résultat. Merci d'avance pour ceux qui se pencheront sur mon problème. Bonne année au passage. |
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Nicolas Vives Inscription : avril 2010 Messages : 178 ![]() |
Salut.
C'est simple : tu peux réutiliser tes agrégations dans d'autres données (objets "data"). Ce que tu dois changer :
|
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 7 ![]() |
Parfait merci beaucoup. Nouvelle petite question, n'est-il possible de ranger les agrégats seulement selon l'ordre croissant ou décroissant de ce que l'on groupe, ou bien il est possible de trier selon un ordre précis, comme par exemple l'ordre dans lequel on a entré les valeurs via xml ?
Pour être plus clair : Dans mon fichier xml, dans la partie que l'on triera, je vais avoir, dans cet ordre : A, C, E, G, B, D, F, H. Lorsque je fais mon agrégat, il me range ça soit dans l'ordre croissant, soit dans l'ordre décroissant. Pourtant j'aimerais garder cet ordre là. Est-ce possible ? Merci pour tout ! |
|
|
00
|
|
|
#9 |
|
Membre confirmé
![]() Nicolas Vives Inscription : avril 2010 Messages : 178 ![]() |
Le tri est une notion relative aux groupes, pas aux agrégats. Quand tu crées un groupe, dans la fenêtre où tu définis ce groupe (notamment le critère de groupement), en bas de la fenêtre, tu as une section "sorting". A toi de définir le critère de tri. Par contre, je ne pense pas que tu arriveras à obtenir le critère "ordre d'écriture dans le fichier xml". Dans ton cas, ça correspond à l'ordre alphabétique, tant mieux, mais sans ça je ne pense pas que tu en aurais été capable.
|
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 7 ![]() |
Ok tant pis, merci beaucoup du temps que tu as pris pour me répondre.
Bonne fin de semaine ! |
|
|
00
|
|
|
#11 |
|
Membre confirmé
![]() Nicolas Vives Inscription : avril 2010 Messages : 178 ![]() |
Euh, désolé si je n'ai pas été clair : si tes données sont écrites dans ton fichier dans l'ordre alphabétique (A, B, C...), alors ton tri est faisable. Va dans la section tri dont j'ai parlé, et fais un tri sur ton champ qui contient ta lettre, basta.
|
|
|
00
|
|
|
#12 |
|
Invité de passage
![]() Inscription : décembre 2010 Messages : 7 ![]() |
Justement non, ça suit un ordre chronologique, pas un ordre alphabétique.
|
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() Nicolas Vives Inscription : avril 2010 Messages : 178 ![]() |
Et bien rajoute la date dans ton fichier xml. Non ?
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com