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 11/01/2007, 15h51   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 10
Points : 2
Points : 2
Par défaut [Debutant] Afficher les colonnes horizontalement

Bonjour,

Je suis débutant avec Birt et je suis en train de créer un rapport sur les charges de travail d'employés pour un projet.

Pour info, voir l'image jointe.

Le problème est que je ne vois pas comment aligner horizontalement les données
(qui dépendent des semaines en colonne et des employés en rangée).

Quelqu'un a-t-il déjà fait quelque chose de similaire?

merci d'avance.
Images attachées
Type de fichier : jpg rapportBirt.jpg (132,4 Ko, 25 affichages)
thesailingcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2007, 16h04   #2
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Bonjour,

http://www.developpez.net/forums/sho...d.php?t=207382
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 10h27   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 10
Points : 2
Points : 2
Citation:
Envoyé par BiM
J'ai été voir sur le site de BIRT. Il y a bien une cross data table, mais mon problème est que je veux que le nombre de mes colonnes soit lui aussi dynamique.


J'ai pas l'impression que ce soit possible...
Mais je suis ouvert à toutes proprosition.
thesailingcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/01/2007, 10h47   #4
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Le problème du nombre de colonnes dynamiques c'est qu'il y a bien un moment où il n'y aura plus de place sur ta page... Il n'y a pas encore de solution de retour à la ligne automatique au bout de X colonnes. Cependant j'avais remédié à ce problème.

http://www.developpez.net/forums/sho...d.php?t=176415

Le bug a été résolu depuis.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 15h27   #5
Invité de passage
 
Inscription : septembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 10
Points : 2
Points : 2
Ok merci, BiM.

Ta solution est déjà pas mal intéressante.

Comme c'est un report assez lourd on je vais réfléchir comment séparer les colonnes.

J'avais une autre colle pour toi :

J'en ai un peu marre des requêtes SQL extrêmement lourde et pénible et donc j'essaye d'utiliser plûtôt un scriptableDataSet.

Le truc c'est que partout je vois des examples avec des collection déjà écrite dans les classes, mais j'aimerais savoir s'il est plutôt possible d'utiliser la méthode
addScriptableJavaObject("monObjetString", monObjet);
depuis la servlet que j'employe.

je vais faire quelques essais mais comme je sais pas trop comment récupèrer ça depuis le rptdesign de Birt



-----------------------------------
Sinon si quelqu'un savoir comment intègrer Birt avec des pages jsp, je peux aider.
thesailingcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 16h16   #6
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Beh je n'utilise que des ScriptedDataSet, tu es tombé sur la bonne personne. Et si tu regardes bien dans tous mes exemples je passe les objets en paramètres, desfois ce sont des java.util.List (ou dérivés) d'objets quelconques dont j'utilise les méthodes pour extraire les données. De temps en temps ce sont de simples tableaux.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 16h43   #7
Invité de passage
 
Inscription : septembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 10
Points : 2
Points : 2
Citation:
Envoyé par BiM
Beh je n'utilise que des ScriptedDataSet, tu es tombé sur la bonne personne.
Je ne trouve pas les exemples ou tu utilise des objets depuis un objet.

en fait je voudrais avoir des objets ou des listes comme tu le dis que je crée depuis mon application et que j'envoie tout simplement sur Birt
addscriptablejavaobject

les envoyer ca va,
mais les récupérer???
thesailingcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 16h45   #8
Invité de passage
 
Inscription : septembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 10
Points : 2
Points : 2
Citation:
Envoyé par thesailingcat
Je ne trouve pas les exemples ou tu utilise des objets depuis un objet.
Je voulais dire des dataset depuis des objets instanciés.

merci
thesailingcat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 17h15   #9
BiM
Modératrice
 
Avatar de BiM
 
Femme
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
Inscription : janvier 2005
Messages : 7 299
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT

Informations forums :
Inscription : janvier 2005
Messages : 7 299
Points : 8 650
Points : 8 650
Citation:
Envoyé par BiM
Salut !

Personnellement j'ai résolu le problème principal de lenteur qui est en effet dû au démarrage du serveur. Il faudrait que tu crées un singleton qui isole le moteur (engine) :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import java.util.ArrayList;
import java.util.Locale;
 
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.RenderOptionBase;
import org.eclipse.birt.report.engine.api.ReportEngine;
 
public class EditionPDF {
 
	private static EditionPDF m_Instance = null;
	private ReportEngine engine;
	private String realPath;
	private RenderOptionBase option;
	private String etat;
	private String chemin;
	private ArrayList parametres;
 
	private EditionPDF()
	{
		EngineConfig config = new EngineConfig();
		realPath = "C:/Jakarta/webapps/TestBIRT/";
		config.setResourcePath(realPath+"/WEB-INF/classes/ressources/");
		config.setEngineHome(realPath+"/WEB-INF/ReportEngine");	//endroit où se trouvent les librairies du Runtime
		engine = new ReportEngine(config);		//engine permet de connaitre et de modifie le fichier .rptdesign
		option = new RenderOptionBase();
		option.setOutputFormat(RenderOptionBase.OUTPUT_FORMAT_PDF);	//Format du fichier de sortie
	}
 
	public static EditionPDF getInstance()
	{
		if (m_Instance == null)
			m_Instance = new EditionPDF();
		return m_Instance;
	}
 
	public void init(String etat, String chemin, ArrayList parametres)
	{
		this.etat = etat;
		this.chemin = chemin;
		this.parametres = parametres;
	}
 
	public void run()
	{
		try
		{
			IReportRunnable design = engine.openReportDesign(realPath+"/WEB-INF/etats/"+etat+".rptdesign");
			IRunAndRenderTask task = engine.createRunAndRenderTask(design);		//Crée une tâche afin d'éxécuter le rapport
			task.setParameterValue("chemin",realPath);
			for (int i=0;i<parametres.size();i++)
			{
				ParametreEditionPDF param = (ParametreEditionPDF)parametres.get(i);
				task.setParameterValue(param.getCle(),param.getValeur());
			}
			task.setParameterValue("realPath", realPath);
			/* Création PDF */
			option.setOutputFileName(chemin);	//Nom du fichier de sortie
			task.setRenderOption(option);		//Chargement du fichier
			/* Fin création PDF */
			task.run();							//Création du fichier
		}
		catch (EngineException e)
		{
			System.out.println(e.getMessage());
		}
	}
 
	public void destructeur()
	{
		engine.destroy();
	}
}
Sachant que ParametreEdition ressemble à un Bean :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class ParametreEditionPDF {
	private String cle;
	private Object valeur;
 
	public ParametreEditionPDF(String cle, Object valeur)
	{
		this.cle = cle;
		this.valeur = valeur;
	}
 
	public String getCle() {
		return cle;
	}
 
	public Object getValeur() {
		return valeur;
	}
}
La première classe te permets de créer le moteur que tu réutiliseras et de l'initialiser ainsi que de le lancer. La deuxième classe te permet de passer des paramètres à ton rptDesign de façon propre.

Je te donne un exemple d'utilisation :
Code :
1
2
3
4
5
List parametres = new ArrayList();
parametres.add(new ParametreEditionPDF("personnes",lesPersonnes);
EditionPDF edition = EditionPDF.getInstance();
edition.init("MonRapport", "MonRapport.pdf", (ArrayList)parametres);
edition.run();
Ce code crée la liste des paramètres à passer au rptdesign puis récupère l'instance en cours de l'engine. Si l'instance n'est pas lancée, il le fait (donc premier lancement plus long). Ensuite, il initialise les options principales :
- Nom du rptdesign
- Nom du fichier de sortie
- Liste des paramètres
Enfin, l'édition est lancée.
Voila un extrait de sujet récent et j'ajouterais :
- Tu crées un ScriptedDataSource
- Tu crées un ScriptedDataSet Personne auquel tu lies le ScriptedDataSource
- Tu sélectionnes le DataSet Personne créé, et tu cliques sur l'onglet Script.
- Dans la partie open, tu mets :
Code :
1
2
3
4
5
personnes = params["personnes"];
nbLignes = 0;
if (personnes != null)
	nbLignes = personnes.size();
ligneEnCours = 0;
- Dans la partie fetch, tu mets :
Code :
1
2
3
4
5
6
7
8
if (ligneEnCours >= nbLignes)
	return false;
var personne = personnes.get(ligneEnCours);
row["NomPrenom"] = personne.getNom()+" "+personne.getPrenom();
row["Age"] = personne.getAge();
row["Pere"] = personne.getPere().getPrenom();
row["Mere"] = personne.getMere().getPrenom();
ligneEnCours++;
return true;
- Enfin dans la partie close tu mets :
Remplaces mes méthode par les tiennes évidemment
Tu peux passer autant d'objets que tu veux de cette manière.
__________________
__~{@ BiM - Modératrice "Business Intelligence" @}~
Consultante/Formatrice BIRT & Ingénieur Java/J2EE/GWT
___________.~{@ Lapine crétine @}~
BiM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2007, 17h33   #10
Invité de passage
 
Inscription : septembre 2006
Messages : 10
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 10
Points : 2
Points : 2
OK merci ca a l'air d'être ce que je veux.

Et pour la rapidité de Birt j'avais vu qque part ca aussi mais merci de me le rappeler je l'avais pas encore faire
thesailingcat 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 00h58.


 
 
 
 
Partenaires

Hébergement Web