Rechnungsausdruck mit JasperReports + IReports

csman

Grünschnabel
Hallo!

Nachdem ich mir jetzt schon einiges über JasperReports durchgelesen haben stehen leider immer noch Fragen offen ;)

Wir realisieren in einem Schulprojekt eine Software um Arztrechnungen zu erstellen. Grundsätzlich gibt es da soweit keine Probleme. Das ganz wird in Java realisiert und die Speicherung der Rechnungen sowie der Patienten erfolgt in einer Oracle XE Datenbank.

Nun geht es aber darum wie man die Rechnungen ausdruckt. Ich habe dazu schon einiges über JasperReports gelesen und bin mal soweit einen Report von einem fixen SQL Statement zu erstellen.

Doch jetzt stellt sich mir die Frage ob ich das SQL Statement für den Report aus dem Java Programm beeinflussen kann?! (Also es wäre dann in etwa das selbe SQL Statement nur wäre abhängig vom gewünschten Ausdruck die Prüfung der Rechnungsnummer unterschiedlich.)
Oder wäre es besser die Daten mittels SQL Statements in das Java Programm zu holen und anschließend dann an den Report zu übergeben?

Leider konnte ich für beide Möglichkeiten nicht sehr viel finden. D.h. ich weiß zur Zeit nicht wie und ob ich das SQL Statement beeinflussen kann bzw. wie ich Daten vorher an den Report übergeben kann.


Mit Bestem Dank schon mal im Vorraus
csman
 
Zuletzt bearbeitet:
Ich verstehe nicht so ganz was du unter beeinflussen meinst, aber du kannst dir mit deinem Programm die Daten aus der Datenbank holen und sie dann JasperReports übergeben(wie willst du es auch sonst mache?) Und wenn du an unterschiedlichen Stellen unterschiedliche Daten brauchst kannst du ohne weiteres sagen wenn ein Wert null/0 ist dann drucke ihn ncht mit aus.. Ich hoffe das war es was du wissen möchtest, ansonsten präzisiere deine Frage am besten mit einem kleinen Beispiel ;)

mfg
elmato
 
Grundsätzlich sehe ich darin kein Problem die Daten im Java Programm aus der Datenbank zu holen. Allerdings findet man nirgendwo Anleitung wie man die Daten dann ein den Report übergibt bzw. wie man einen Report überhaupt erstellt wenn kein SQL Statement benützt wird.

Bei allen Anleitungen usw. die ich bis jetzt gefunden habe wird ein simples SQL Statement und eine JDBC Datenbank Connection verwendet.
 
Nunja, es kommt auf die Struktur deiner Daten an, jenachdem musst du dir eine eigene JRDataSource schreiben oder wenn du es z.B. Tabellenform hast kannst du auf die JRTablemodelDatasource zurückgreiffen, es gibt auch noch JRBEanCollectionDatasource u.a., ich hatte da mal eine ziemich gute Website zu ich schau mal ob ich sie wiederfinde..

jup hier ist sie :)
http://www.infoviae.it/jasperreports_e.html
 
Verstehe ich das richtig, ich erstelle in IReport Felder mit dem Namen der Spalten.
Dann greife ich im Java Programm auf die Datenbank zu und bekommen beispielsweise ein ResultSet. Dieses ResultSet kann ich dann mit fillReport an den Report übergeben und es werden die Felder, die ich in der Tabelle habe automatisch ausgefüllt.?!
 
So mein Report ist jetzt im Großen und ganzen fertig ;)

Nur habe ich jetzt noch eine Frage:

Es gibt 3 Felder in der Tabelle (Titel, Vorname, Nachname).
Wie kann ich die Felder nacheinander hängen und sagen, wenn der Titel leer ist soll er einfach mit dem Vornamen anfangen als zB so "Max Mustermann" oder "DI Max Mustermann".

Ich hab es folgendermaßen versucht
Code:
$F{titel}+" "+$F{vname}+" "+$F{nname}

Wenn jetzt der Titel aber leer ist dann sieht es so aus "null Max Mustermann"

Bei einem einzelnen Feld kann man ja sagen, wenn das Feld null ist, dann soll es nicht angezeigt werden, aber wie funktioniert das, wenn ich die 3 Felder verbinde?
 
Hallo,

Bei drei Feldern funktioniert das ganze genauso.
Du musst dir nur alle möglichen Kombinationen überlegen, die auftreten können.
Diese Kombinationen musst du dann in geschachtelte Abfragen packen.
Bsp. Feld 1, Feld 2, Feld 3

Wenn Feld 1 = null
dann wenn Feld 2 = null
dann wenn feld 3 = null
dann druck nichts
sonst
druck nur Feld 3 (nur Feld 3 ist gefüllt)
sonst
wenn Feld 3 = null
dann druck Feld 2
sonst druck Feld 2 und Feld 3

usw.
 
Hi!

Dein Tipp funktioniert für Strings sehr gut, doch jetzt will ich zwei Date Datentypen vergleichen und er vergleicht irgendwie gar nichts:

Code:
(($F{enddat}==$F{startdat})?("Behandlungsdatum:"):("Behandlungszeitraum:"))

Es wird immer der Text "Behandlungszeitraum:" ausgeben.

Ich verwende die gleiche Zeile für einen Stringvergleich da funktioniert alles!

Kann mir jemand sagen was an dieser Zeile nicht stimmt bzw. warum er den Vergleich nicht durchführt?!

Danke!
 
Zurück