# Eclipse Report Generator - Birt



## KartoffelKiffer (24. Okt 2006)

Hi,

ich bin zur Zeit auf der Suche nach einem performanten Report Generator für die Umgebungen Linux und Windows.

Vor einiger Zeit habe ich unter Windows Berichte mit Crystal Reports gestaltet, dies soll jetzt auf OpenSource und halt auch Linux umgestellt werden.

Ich bin nun vor einigen Tagen auf Birt gestoßen, ein in Eclipse eingebetteter Report Generator.

Allerdings verstehe ich dies Prinzip nicht so ganz, die Birt-Tutorials habe ich mir auf der Eclipse-Seite durchgelesen; gibt es für Birt eine Art Schnittstelle in Java, wo ich Berichte über eine Programmierumgebung (aus einer Applikation heraus) starten kann?

Bsp.: 
	
	
	
	





```
Report myBericht = new Report("bericht.rptdesign");
myBericht.openReport;
```

Naja, so in der Art meinte ich meine Frage.

Sind auch die Quellen für einen Bericht fix? Unter Crystal Reports kenne ich es so, dass man Quellen nachträglich verändern konnte. Man wählte für die Berichterstellung eine Quelle aus, erstellte den Bericht, rief ihn auf, und überlagerte alte Quellen. Natürlich sollten da die Quelle fürs Erstellen und fürs Öffnen identisch sein, da es sonst zu Inkompatiblität führte.

Ich hoffe es kennt sich hier wer ein bisschen mit Birt aus, ich stehe jedenfalls grad auf dem Schlauch.



Mfg Tom


----------



## Guest (25. Okt 2006)

Hallo,

zuerst einmal Schande über mein Haupt, ich hatte die Sache mit dem Viewer gekonnt übersehen.

Die Einrichtung dessen hat natürlich super geklappt, meine ersten Berichte wandern auch schon über den Brwoser.

Ähm, eine Frage bleibt dennoch bestehen: Kann man die Quellen irgendwie noch zur Laufzeit überlagern?

Ich arbeite mit XML-Dokumenten als Quelle, die Quelle kann ich zur Berichtserstellung lediglich einmal setzen (Sichtwort DataSource; DateSet) und dieses XML-Dokument verwendet er dann auch für den Viewer.

Keine Ahnung wie, nur ist es irgendwie möglich, dem Bericht / dem Viewer zu sagen, "nimm für die Darstellung des Berichtes eine andere Quelle"? Unter CrystalReports kenne ich es so, dass man eine Quelle zur Erstellung des Berichtes verwendet hat, und eine andere dann für die Ausgabe. Zum größten Teil waren diese Quellen aber auch identisch. Wie schon erwähnt würde es sonst zu Problemen kommen, da vielleicht die eine Quelle eine Spalte nicht besitzt, die im Quelldokument zur Berichtserstellung aber noch vorhanden war.

Kann ich in dem Birt denn "bloß" starr mit diesem einen XML-Dokument arbeiten, wo in der Erstellung angegeben?




Mfg Tom


----------



## Gast (25. Sep 2007)

Bei der Erstellung von Reports mit Birt gibt es ganz grob die Schritte
1. Erstellung des Designs *.rptdesign
2. Erstellen des Reports 
3. ...

Das Erstellen des Designs wird meistens per Gui, bzw. Eclipse Plugin erledigt. Dabei legt man die Datasource und Datasets fest. Als Ergebnis bekommt man eine rptdesign Datei und die Datasource sind in der Regel fest drin.

Das Erstellen des Reports greift auf die rptdesign Datei zurück und füllt sie mit den Daten der angegebenen Datasource.

Nun gibt es mehrere Möglichkeiten.
1. Kann man beim Design Properties anlegen. (Der Punkt unter Datasets im Eclipse Plugin). Diese Properties gibt man dann zur Laufzeit mit. Evtll kann man da auch die Datasource mitgeben.

In meinem Fall benutze ich eine JDBC Source. Mit den Mitgegebenen Properties kann ich verschiedene Filter (where Bedingungen ) für eine Query schalten und verändere so die Ergebnisse meines DataSets.

2. Man kann per Java Code das Design komplett zur Laufzeit erstellen. (Sehr mühsam da es kaum einer macht und dadurch wenig Sourcen zu finden sind). Man benötigt keine rptdesign Datei, sondern kann dann direkt das Design-Objekt der ReportEngine übergeben.

3. Man generiert sich ein Template in das man z.B. zur Laufzeit eine Ersetzung der Datasource-Adresse vornimmt. Ist ja schließlich nur eine xml Datei diese ReportDesign Datei. Um danach die generierte rptDatei für seinen Report zu verwenden.

4. Eventuell. Hab ich so noch nicht probiert. Die ReportDesignDatei als ReportDesign Objekt laden um danach per Design Api die Datasource auszutauschen. Ist vllt einen versuch Wert.


----------

