Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Hier können die JVerein-Frischlinge ihre Fragen stellen.

Moderator: heiner

Antworten
aheiser81
Beiträge: 7
Registriert: Mittwoch 12. September 2018, 07:10
Mitglieder: 114
JVerein-Version: 2.
Betriebssystem: Windows
Wohnort: Dresden

Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
RuderMarkus
Beiträge: 147
Registriert: Samstag 15. September 2018, 23:32
Verein: Osnabrücker Ruder-Verein
Mitglieder: 400
JVerein-Version: 2.8.17
Betriebssystem: Win

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
aheiser81
Beiträge: 7
Registriert: Mittwoch 12. September 2018, 07:10
Mitglieder: 114
JVerein-Version: 2.
Betriebssystem: Windows
Wohnort: Dresden

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
Danzelot
Beiträge: 294
Registriert: Freitag 30. Juli 2010, 21:29
Verein: Musica Margaretha Reutti e.V.
Mitglieder: 51
JVerein-Version: 2.8.17
Betriebssystem: Windows
Wohnort: Ulm

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
RuderMarkus
Beiträge: 147
Registriert: Samstag 15. September 2018, 23:32
Verein: Osnabrücker Ruder-Verein
Mitglieder: 400
JVerein-Version: 2.8.17
Betriebssystem: Win

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag von RuderMarkus »

Welches Datenformat haben die Felder? Ich habe Text zu Long konvertiert.
aheiser81
Beiträge: 7
Registriert: Mittwoch 12. September 2018, 07:10
Mitglieder: 114
JVerein-Version: 2.
Betriebssystem: Windows
Wohnort: Dresden

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
Danzelot
Beiträge: 294
Registriert: Freitag 30. Juli 2010, 21:29
Verein: Musica Margaretha Reutti e.V.
Mitglieder: 51
JVerein-Version: 2.8.17
Betriebssystem: Windows
Wohnort: Ulm

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
aheiser81
Beiträge: 7
Registriert: Mittwoch 12. September 2018, 07:10
Mitglieder: 114
JVerein-Version: 2.
Betriebssystem: Windows
Wohnort: Dresden

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
Danzelot
Beiträge: 294
Registriert: Freitag 30. Juli 2010, 21:29
Verein: Musica Margaretha Reutti e.V.
Mitglieder: 51
JVerein-Version: 2.8.17
Betriebssystem: Windows
Wohnort: Ulm

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
aheiser81
Beiträge: 7
Registriert: Mittwoch 12. September 2018, 07:10
Mitglieder: 114
JVerein-Version: 2.
Betriebssystem: Windows
Wohnort: Dresden

Re: Aus 2 Zusatzfeldern ein Lesefeld errechnen?

Beitrag 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
Antworten