Seite 1 von 1
Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Mittwoch 12. September 2018, 15:59
von aheiser81
Hallo
Wir sind ein Kleingärtnerverein im Dresdner Westen. Unser Kassierer arbeitet immer noch mit Excel-Tabellen. Dies wollen wir ändern. Jverein scheint mir da eine sehr gute Alternative. Habe Testweise Daten eingegeben, Abrechnungsäufe und allea funktioniert soweit.
Jetzt bin ich auf die Lesefelder gestoßen, wo ich mit Hilfe von Beanshell, zum Beispiel Namensketten, etc erzeugen kann.
Meine Idee war es jetzt den Wasserverbrauch zu errechnen, welchen ich mit Zählerstand a und b in zwei Zusatzfeldern eingebe. Leider kenne ich mich weder mit Beanshell / Java aus. Kann mir da jemand helfen?
Gruß, Andreas
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Montag 24. September 2018, 23:42
von RuderMarkus
Hallo Andreas,
Skript "Substrahiere" damit kann ich meine Mitgliederfelder auslesen und matehmatische Operationen durchführen.
Code: Alles auswählen
long l = Long.parseLong(mitglied_id);
long m = Long.parseLong(mitglied_beitragsgruppe_id);
long substract = l - m;
return ("Summe = " + substract);
Gruß
Markus
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Sonntag 7. Oktober 2018, 21:03
von aheiser81
Hallo Markus,
Dein Code klappt soweit. Aber wenn ich meine Variablen eingebe kommt immer ein Fehler.
Code: Alles auswählen
long l = Long.parseLong(mitglied_zusatzfeld_a_energie_1_neu);
long m = Long.parseLong(mitglied_zusatzfeld_b_energie_1_alt);
long substract = l - m;
return ("Summe = " + substract);
und als Ergebnis kommt.
Skript-Fehler:
Sourced file: inline evaluation of: ``long l = Long.parseLong(mitglied_zusatzfeld_a_energie_1_neu); long m = Long.par . . . '' : Typed variable declaration : Method Invocation Long.parseLong
Hoffe Du kannst mir da auch weiterhelfen.
Danke, Andreas
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Montag 8. Oktober 2018, 08:46
von Danzelot
Hallo Andreas,
ist eines der Felder leer? Dann kann der Wert nicht umgewandelt werden. Deshalb würde ich die Werte vorinitialisieren und beim Parsen die Fehler abfangen.
Code: Alles auswählen
long l = 0;
long m = 0;
try {
l = Long.parseLong(mitglied_zusatzfeld_a_energie_1_neu);
} catch (Exception e) {
}
try {
m = Long.parseLong(mitglied_zusatzfeld_b_energie_1_alt);
} catch (Exception e) {
}
long substract = l - m;
return ("Summe = " + substract);
Gruß
Danzelot
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Montag 8. Oktober 2018, 13:00
von RuderMarkus
Welches Datenformat haben die Felder? Ich habe Text zu Long konvertiert.
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Dienstag 9. Oktober 2018, 00:07
von aheiser81
Vielen Dank auch an Danzelot.
Habe jetzt schon einen meiner Fehler erkannt. Hatte um auch Kommastellen abzubilden die Felddefinition auf Währung gestellt. Dies funktionierte nicht. Aber mit Ganzzahlen schon. Da gibt es bestimmt auch noch einen Tipp das es mit Währungen funktioniert.
Vielen Dank, Andreas
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Dienstag 9. Oktober 2018, 08:56
von Danzelot
Hallo Andreas,
für die Betragsfelder sieht der Code so aus:
Code: Alles auswählen
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
// muss groß genug sein, um die Eingabefelder zu parsen
String pattern = "###,###,###.##";
BigDecimal d1 = BigDecimal.ZERO;
BigDecimal d2 = BigDecimal.ZERO;
// Zahlenformat definieren
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator('.');
symbols.setDecimalSeparator(',');
// Dezimalformat einrichten
DecimalFormat df = new DecimalFormat(pattern, symbols);
df.setMinimumFractionDigits(2);
df.setParseBigDecimal(true);
try {
d1 = (BigDecimal) df.parse(mitglied_zusatzfeld_betrag_1);
} catch (Exception e) {
}
try {
d2 = (BigDecimal) df.parse(mitglied_zusatzfeld_betrag_2);
} catch (Exception e) {
}
return "Diff: " + df.format(d2.subtract(d1));
Zuerst muss der Text aus den Feldern in eine Zahl umgewandelt werden, damit man damit rechnen kann. Am Ende die Zahl wieder für die Ausgabe formatieren.
Gruß
Danzelot
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Dienstag 9. Oktober 2018, 20:25
von aheiser81
Hallo Danzelot,
ich glaub man merkt das ich absolut keine Ahnung von Java habe. Hast du auch noch einen Code wenn ich (d1-d2)+(d3-d4)=Summe rechnen will. Ich danke Dir für Deine Hilfe.
Gruß, Andreas
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Mittwoch 10. Oktober 2018, 08:07
von Danzelot
Hallo Andreas,
den Code musst Du um die Variablen d3 und d4 erweitern.
Code: Alles auswählen
BigDecimal d3 = BigDecimal.ZERO;
BigDecimal d4 = BigDecimal.ZERO;
und dann die Felder auslesen und zuweisen
Code: Alles auswählen
try {
d3 = (BigDecimal) df.parse(mitglied_zusatzfeld_betrag_3);
} catch (Exception e) {
}
try {
d4 = (BigDecimal) df.parse(mitglied_zusatzfeld_betrag_4);
} catch (Exception e) {
}
Das Ergebnis berechnet sich dann mit
Code: Alles auswählen
return "Diff: " + df.format(d1.subtract(d2).add(d3.subtract(d4)));
Oder etwas übersichtlicher:
Code: Alles auswählen
BigDecimal diff1 = d1.subtract(d2);
BigDecimal diff2 = d3.subtract(d4);
BigDecimal sum = diff1.add(diff2);
return "Summe: " + df.format(sum);
Gruß
Danzelot
Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?
Verfasst: Donnerstag 11. Oktober 2018, 06:29
von aheiser81
Hallo Danzelot,
vielen lieben Dank. Jetzt funktioniert dies. Eins muss ich noch anmerken, es ist anscheinend bloß eine bestimmte Anzahl an Zeichen zugelassen und somit geht es nicht zu speichern. Habe dann die Kommentare rausgenommen und dann haben die Zeichen gereicht.
Danke, Andreas