JasperReports/IReport

o mann.. jetzt muss ich diesen Thread noch mal aufmachen :(
kann mir einer dabei helfen
ich hab ein Feld vom Typ BigDecimal.. in diesem steht entweder
0.00
1,00
oder 2,00 drin

um das zu testen will ich einfach den wert zurück geben.. ich hab das mal so im IReport gemacht, aber es kommen bei 2 sätzen fehlerhafte ergebnisse..
mein code (im IReport)
Code:
($F{a_pe_vk}.compareTo(new BigDecimal(0.00))==0 ? new BigDecimal(0.00) : 
  ($F{a_pe_vk}.compareTo(new BigDecimal(1.00))==1 ? new BigDecimal(1.00) : 
    ($F{a_pe_vk}.compareTo(new BigDecimal(2.00))==2 ? new BigDecimal(2.00) : new BigDecimal(111.00)
    )
  ) 
)

heisst ich schau zuerst.. steht 0 drin
ja :0,00 zurück geben
nein: schauen ob 1 drin steht
ja: 1,00 zurück geben
nein: schauen ob 2 drin steht
ja: 2,00 zurück geben
nein 111,00 zurück geben

ich bekomme leider je nach menge der sätze verschiedene werte..
hab ich da nen hund drin? Ich verstehs echt bald nicht mehr..

übrigens die Zahlen die ich zurück gebe sind frei erfunden.. einfach um zu sehen was passiert
plz HELP

gruss
MScalli
 
Hi

Schau dir die Doku zu compareTo mal genau an. Vorallem den Rückgabewert:
Returns:
-1, 0 or 1 as this BigDecimal is numerically less than, equal to, or greater than val.
Das heisst: wenns gleich sind kommt 0 zurück. Wenn der zu vergleichende Wert kleiner ist kommt -1 zurück wenn er grösser ist kommt 1 zurück.

Heisst für dich:
Java:
($F{a_pe_vk}.compareTo(new BigDecimal(0.00))==0 ? new BigDecimal(0.00) : 
  ($F{a_pe_vk}.compareTo(new BigDecimal(1.00))==0 ? new BigDecimal(1.00) : 
    ($F{a_pe_vk}.compareTo(new BigDecimal(2.00))==0 ? new BigDecimal(2.00) : new BigDecimal(111.00)
    )
  ) 
)
Ahja und 0.00 ist nicht nötig. 0.0 reicht.


Gruss
 
Noch 1 winzige Frage.. Wo finde ich diese Doku :)
(hab mir jetzt das Buch besorgt.. was ein wälzer)
O mann.. du glaubst gar nicht wie lange ich da schon rum mache^^

vielen dank noch mal :)

gruss
MScalli
 
Zuletzt bearbeitet:
Grüße die Herren

Als ich wieder mal verkrampft das Web auf der Suche nach "kostenloser" Hilfe durchforstet habe stosse ich auf dieses Forum.
Und was vernehmen meine tränenden Augen:
DA GIBTS JA JEMANDEN DER SICH MIT iReport AUSKENNT :)

Langer Rede kurzer Sinn, ich hab zwar den Report perfekt erstellt aber aus einer java Applikation bring ich ihn nicht zum Laufen.
Natürlich hab ich mir schon die ToDo's rein gezogen, aber offensichtlich stimmt was nicht mit meiner Weisheit!

Das ist mein Versuch:

try{
JasperDesign jasperDesign = JRXmlLoader.load(reportFile);
JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);(!) Hier zerlegt es ihn!
String url = "jdbc:mysql://localhost/xxxxxxxxxxxxx";
String usr = "xxxxx";
String pass = "xxxxxx";
Class.forName("com.mysql.jdbc.Driver").newInstance();
java.sql.Connection conn = java.sql.DriverManager.getConnection(url,usr,pass);
System.out.println("Datenbank ist verbunden");
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null,conn);
JasperViewer.viewReport(jasperPrint);
}catch(Exception ex) {
String connectMsg = "Could not create the report " + ex.getMessage() + " " + ex.getLocalizedMessage();
System.out.println(connectMsg);
}


Liebe Anhänger des iReports, tut ein gutes Werk und helft den Unwissenden
Ich komm erst gar nicht zum Connect der DB!

Version: iReport nb 3.1.4
Eingebundene libs:
commons-beanutils-1.7.jar
commons-digester-1.7.jar
jasperreports-3.1.4.jar
commons-collections-2.1.jar
commons-logging-1.1.jar

Imports:
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.JasperReport;


Ergebnis:
Could not create the report Error compiling report java source files : E:\Work\BierBoerse09\Bier_Boerse\classic_1237571800281_37932.java Error compiling report java source files : E:\Work\BierBoerse09\Bier_Boerse\classic_1237571800281_37932.java
 
Also wenn du nichts vom Prgramm übergeben musst reicht es so


Code:
		try{
			JasperReport jasperReport = JasperCompileManager.compileReport("K:\\Temp\\Test.jrxml"); //<-- hier den Pfad der jrxml angeben
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, null, getConnection());
			
			JasperViewer.viewReport(jasperPrint);
			
		}catch(Exception ex) {
			String connectMsg = "Could not create the report " + ex.getMessage() + " " + ex.getLocalizedMessage();
			System.out.println(connectMsg);
		}

so wird dir der Bericht im Viewer angezeigt!!
 
Man oh man, wenns so einfach wäre.
Ich hatte schon gehofft.
Aber leider wars wirkungslos!
Ich hab keine Ahnung wieso es ihn jedes mal auf die gleiche Art zerlegt!

Gibts eine Möglichkeit die libs zu Debuggen, um Einzelheiten raus zu bokommen was ihm den Schluckauf beschert!
 
Zuletzt bearbeitet:
Man oh man, wenns so einfach wäre.
Ich hatte schon gehofft.
Aber leider wars wirkungslos!
Ich hab keine Ahnung wieso es ihn jedes mal auf die gleiche Art zerlegt!

Gibts eine Möglichkeit die libs zu Debuggen, um Einzelheiten raus zu bokommen was ihm den Schluckauf beschert!
Vielleicht ist es einfacher, wenn Du genau sagst woran es scheitet, z.B. eine Exception bekommst, oder ähnliches wäre es nicht schlecht sie hier mal zu posten.
Denn wenn es bei einem funktioniert bei dem anderen nicht, könnte es entweder an der Umgebung oder an dem konkreten Report liegen.

Auf die Gefahr, dass ich jetzt ein wenig klugschieße habe ich manchmal das Gefühl, dass IReport- JasperReport- und eigetnlich Java-Belange gern in diesem Thread verwechselt werden.
Das ursprüngliche Problem mit dem Vergleichen der Zahlen, war ein reines Java-Belang, hatte weder mit Jasper- noch miti IReport was zu tun. Das Problem den Report nicht in Deinem Programm aufrufen zu können ist noch näher zu untersuchen ob es ein Umgebungsproblem, oder ein Problem des erzeugten Reports ist, Wenn es kein Umgebungsproblem sein soltle, könnte es an einen kaputten Report handeln, also ein Bug in IReport sein, oder eine Lücke in JasperReport sein. IReport ist nämlich nur eine Oberfläche um JasperReport-Konforme XMLs für Reports zu erstellen.
 
Noch 1 winzige Frage.. Wo finde ich diese Doku :)
(hab mir jetzt das Buch besorgt.. was ein wälzer)
O mann.. du glaubst gar nicht wie lange ich da schon rum mache^^

vielen dank noch mal :)

gruss
MScalli

Hi,
diese Doku zu compareTo findest Du im Java. Wenn Du Eclispe verwendest, kannst Du es sogar im ToolTipText sehen und falls die Doku länger ist als das Fensterchen, kannst Du mit F2 den gesammten Text sehen und scrollen. Alternativ dazu kannst Du auch einfach die Java-Dok notfalls auch im Internet googeln.

Mal noch eine andere Frage, Dein Vergleich ob etwas einem BigDecimal mit wret irgendwas entspricht und dann DeinZuweisen des selben BigDezimal-Wertes, verstehe ich vom Sinn her nicht. Das sieht für mich so aus, als ob Du sagtest wenn 2 2 ist übergebe eine neues 2, ist aus Sicht irgendwie redundant und nicht sher von Nutzen.
Kann es sein, dass Du eigetnlich das Zahlenformat in dem der BigDezimal representiert wird versuchtst zu ändern?
 
Auf die Gefahr, dass ich jetzt ein wenig klugschieße habe ich manchmal das Gefühl, dass IReport- JasperReport- und eigetnlich Java-Belange gern in diesem Thread verwechselt werden.

Ja da hast du vollkommen recht und das geschiet nicht nur hier. Aber vielfach ist es gar nicht so einfach heraus zu finden wo genau das Problem liegt.. Resp ist es ja schon ein Teil der Lösung wenn man weiss wo das Problem liegt ;)

@jaws278: Du kannst den Report erst gar nicht kompilieren, richtig? Also der Compiler müsste eigentlich Errors ausgeben. Wenn er das nicht macht versuche mal den Report direkt in iReport zu compilieren (Im Menu Build -> Kompilieren). Sollte etwas beim Kompilieren nicht klappen wird dir dann der Fehler ausgegeben, kannst du uns den mal posten?

@MScalli: Mit der Doku meine ich die normale JavaDoc. Ist z.B. bei Eclipse schon direkt verlinkt (Wenn du über einer Klasse bist einfach F1 drücken und dann Javadoc for "xy" anklicken.
Oder online bei Sun: http://java.sun.com/javase/6/docs/api/
Allerdings google ich immer nach "Klassenname" java und lande dann meistens automatisch auf der obigen Doku.


Gruss
 

Neue Beiträge

Zurück