Ein Hallo an alle hilfewilligen.
Ich bin absolut neu in der Materie und habe mit Eurer Hilfe schon eine ganze Menge in meinem Formular erreicht.
Ein Problem bekomme ich aber nicht in den Griff:
In dem Formular werden verschiedene Dinge angeboten.
Es gibt ca. 50 Zeilen in denen jeweils drei Textfelder existieren.
Feld1 enthält den Preis. Das Feld ist ausgeblendet.
Feld2 enthält die Anzahl. Dieses Feld soll ausgefüllt werden.
Feld3 bildet das Produkt aus Feld1 und Feld2.
Die Felder haben natürlich alle andere Bezeichnungen.
Ein weiteres Feld bildet über "Berechnung>Wert ist" eine Summe aus den Teilsummenfeldern (Feld3).
Hier wird bereits ein in der Zeile korrekt angezeigter Nachkommawert einfach ignoriert und die Teilsumme entsprechend abgerundet aufsummiert.
In einem weiteren Feld wird über ein Optionsfeld gesteuert ermittelt, ob eine Nachnahme gewünscht ist und der entsprechende Zuschlag wird eingetragen. Hier gibt es Nachkommastellen.
Ein Feld ermittelt den Warenwert und übernimmt, je nach Wert unterschiedliche Versandkosten. Hier gibt es ebenfalls Nachkommastellen.
Ein letztes Summenfeld soll nun die Zwischensumme, die Versandkosten und die Nachnahmegebühr aufsummieren. Dies geschieht mit einem Benutzerdefinierten Script. Allerdings werden auch hier die NAchkommastellen einfach ignoriert (Es wird nicht gerundet, denn ein 2,85 z.B. wird zu 2).
Das verwendete Script für die Versandkosten lautet wie folgt:
var Summeversand = this.getField("Versandkostensumme").value;
if (Summeversand < 50)
{
this.getField("Versandkosten€").value = "5,0";
}
else
{
if (Summeversand < 100)
{
this.getField("Versandkosten€").value = "2,95";
}
else
{
if (Summeversand >= 100)
{
this.getField("Versandkosten€").value = "0,00";
}
};
};
Das Script für die Endsumme:
var Summeversand = this.getField("Versandkostensumme").value;
var Summennachnahme = this.getField("SummeNachnahme").value;
var Versandk = this.getField("Versandkosten€").value;
this.resetForm("Summe");
this.getField("Summe").value = Summeversand + Summennachnahme + Versandk;
Was kann ich tun, damit die Nachkommastellen nicht ignoriert werden? Die Felder sind als Zahl mit zwei Dezimalstellen definiert.
Vielen Dank schon mal, für die Mühen. Ich bin mit meinem Latein am Ende.
Summen ignorieren Nachkommawerte
Summen ignorieren Nachkommawerte
Hallo hilfesuchender,
könnte es so gehen?
Hab's nicht voll durch getestet.
VG Merklin
könnte es so gehen?
Hab's nicht voll durch getestet.
VG Merklin
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
-
- Beiträge: 3
- Registriert: 27.03.2012, 17:45
Summen ignorieren Nachkommawerte
Erst einmal vielen Dank für den Hilfeversuch. Es sah im ersten Moment gut aus, aber sobald ich eine Menge eingetragen habe, rechnet das formular nur noch so, wie oben angegeben. Die 50Cent werden abgeschnitten und die Gesamtsumme ist auch nur die Summe ohne Nachkommastellen.
Schade, aber trotzdem Danke nochmal...
Schade, aber trotzdem Danke nochmal...
Summen ignorieren Nachkommawerte
Hallo,
also das verstehe ich nicht.
In meinem Beispiel rechnet das Formular richtig. Habe es mit TR nachgerechnet.
Oder ist nur bei dir. die Rechnung falsch? Hast du auch die Felder richtig formatiert?
Am Besten wäre ja, du stellst mal ein Beispiel ein, dann könnte man mal drüber schauen.
VG Merklin
also das verstehe ich nicht.
In meinem Beispiel rechnet das Formular richtig. Habe es mit TR nachgerechnet.
Oder ist nur bei dir. die Rechnung falsch? Hast du auch die Felder richtig formatiert?
Am Besten wäre ja, du stellst mal ein Beispiel ein, dann könnte man mal drüber schauen.
VG Merklin
-
- Beiträge: 3
- Registriert: 27.03.2012, 17:45
Summen ignorieren Nachkommawerte
Ich habe die Lösung gefunden:
Zum einen musste das Komma in den Zahlenwerten für die Berechnung mit JavaScript in einen Punkt umgewandelt werden, und dann haben mir die folgenden Threads http://www.acronaut.de/forum8/1219.html, http://www.pdfzone.de/virthos.php?/Fore ... en+mit+Akr... sehr gute Dienste geleistet.
Das Script ist jetzt zwar ziemlich lang, da es 55 Zeilen aufzusummieren gilt, aber es funktioniert. Ich habe alle Teilscripte in eine große Funktion geworfen und dann ging es.
Weiß ggf. jemand, ob man folgende Zeilen über eine for-next-Schleife automatisieren kann, sodaß man nicht wirklich für jeden der drei Befehle 55 Zeilen braucht?
...
var TSumme07 = getField("Anzahl07").value * (this.getField("Preis07").value+"").replace(",",".");
var TSumme08 = getField("Anzahl08").value * (this.getField("Preis08").value+"").replace(",",".");
var TSumme09 = getField("Anzahl09").value * (this.getField("Preis09").value+"").replace(",",".");
...
var ZSVKi = TSumme01 + TSumme02 + TSumme03 + TSumme04 + TSumme05 + TSumme06 + TSumme07 + TSumme08 + TSumme09 + TSumme10 + TSumme11 + TSumme12 + TSumme13 + TSumme14 + TSumme15 + TSumme16 + TSumme17 + TSumme18 + TSumme19 + TSumme20 + TSumme21 + TSumme22 + TSumme23 + TSumme24 + TSumme25 + TSumme26 + TSumme27 + TSumme28 + TSumme29 + TSumme30 + TSumme31 + TSumme32 + TSumme33 + TSumme34 + TSumme35 + TSumme36 + TSumme37 + TSumme38 + TSumme39 + TSumme40 + TSumme41 + TSumme42 + TSumme43 + TSumme44 + TSumme45 + TSumme46 + TSumme47 + TSumme48 + TSumme49 + TSumme50 + TSumme51 + TSumme52 + TSumme53 + TSumme54 + TSumme55;
...
getField("Summe13").value = TSumme13;
getField("Summe14").value = TSumme14;
getField("Summe15").value = TSumme15;
getField("Summe16").value = TSumme16;
getField("Summe17").value = TSumme17;
...
Hier die gesamte Funktion zum Nachahmen:
function MeineSumme()
{
var SummeVKi = 0;
var TSumme01 = getField("Anzahl01").value * (this.getField("Preis01").value+"").replace(",",".");
var TSumme02 = getField("Anzahl02").value * (this.getField("Preis02").value+"").replace(",",".");
var TSumme03 = getField("Anzahl03").value * (this.getField("Preis03").value+"").replace(",",".");
var TSumme04 = getField("Anzahl04").value * (this.getField("Preis04").value+"").replace(",",".");
var ZSVKi = TSumme01 + TSumme02 + TSumme03 + TSumme04;
getField("ZSVK").value = ZSVKi;
if (ZSVKi < 50)
{
this.getField("Versandkosten").value = 5.5;
SummeVKi = 5.5;
}
else
{
if (ZSVKi < 100)
{
this.getField("Versandkosten").value = 2.35;
SummeVKi = 2.35;
}
else
{
if (ZSVKi >= 100)
{
this.getField("Versandkosten").value = 0.0;
SummeVKi = 0.0;
}
};
};
var NNGeb = getField("SummeNachnahme").value
var Gesamtsumme = ZSVKi + SummeVKi + NNGeb;
getField("Summe01").value = TSumme01;
getField("Summe02").value = TSumme02;
getField("Summe03").value = TSumme03;
getField("Summe04").value = TSumme04;
var ZSVKj = (this.getField("ZSVK").value+"").replace(",",".");
if (ZSVKj > 0)
{
getField("Summe").value = Gesamtsumme;
}
else
getField("Summe").value = 0.0;
}
TSummeXY = Zeilenweise Teilsumme (Anzahl * Einzelpreis)
ZSVK = ZwischenSumme für VersandKosten (Von dieser Summe hängt ja ab, ob ein Versandzuschlag erhoben wird, und in welcher Höhe).
NNGeb = Nachnahmegebühr (Je nach dem, ob das Optionsfeld Nachnahme aktiviert ist oder nicht, werden die Kosten mit aufaddiert, oder nicht).
Die lette if-Bedingung soll den Endbetrag auf 0 setzen, wenn kein Artikel ausgewählt ist, weil es unschön aussieht, wenn bei sonst leerem Formular die Versandkosten und ggf. die Nachnahme als Endbetrag stehen bleiben.
Zum einen musste das Komma in den Zahlenwerten für die Berechnung mit JavaScript in einen Punkt umgewandelt werden, und dann haben mir die folgenden Threads http://www.acronaut.de/forum8/1219.html, http://www.pdfzone.de/virthos.php?/Fore ... en+mit+Akr... sehr gute Dienste geleistet.
Das Script ist jetzt zwar ziemlich lang, da es 55 Zeilen aufzusummieren gilt, aber es funktioniert. Ich habe alle Teilscripte in eine große Funktion geworfen und dann ging es.
Weiß ggf. jemand, ob man folgende Zeilen über eine for-next-Schleife automatisieren kann, sodaß man nicht wirklich für jeden der drei Befehle 55 Zeilen braucht?
...
var TSumme07 = getField("Anzahl07").value * (this.getField("Preis07").value+"").replace(",",".");
var TSumme08 = getField("Anzahl08").value * (this.getField("Preis08").value+"").replace(",",".");
var TSumme09 = getField("Anzahl09").value * (this.getField("Preis09").value+"").replace(",",".");
...
var ZSVKi = TSumme01 + TSumme02 + TSumme03 + TSumme04 + TSumme05 + TSumme06 + TSumme07 + TSumme08 + TSumme09 + TSumme10 + TSumme11 + TSumme12 + TSumme13 + TSumme14 + TSumme15 + TSumme16 + TSumme17 + TSumme18 + TSumme19 + TSumme20 + TSumme21 + TSumme22 + TSumme23 + TSumme24 + TSumme25 + TSumme26 + TSumme27 + TSumme28 + TSumme29 + TSumme30 + TSumme31 + TSumme32 + TSumme33 + TSumme34 + TSumme35 + TSumme36 + TSumme37 + TSumme38 + TSumme39 + TSumme40 + TSumme41 + TSumme42 + TSumme43 + TSumme44 + TSumme45 + TSumme46 + TSumme47 + TSumme48 + TSumme49 + TSumme50 + TSumme51 + TSumme52 + TSumme53 + TSumme54 + TSumme55;
...
getField("Summe13").value = TSumme13;
getField("Summe14").value = TSumme14;
getField("Summe15").value = TSumme15;
getField("Summe16").value = TSumme16;
getField("Summe17").value = TSumme17;
...
Hier die gesamte Funktion zum Nachahmen:
function MeineSumme()
{
var SummeVKi = 0;
var TSumme01 = getField("Anzahl01").value * (this.getField("Preis01").value+"").replace(",",".");
var TSumme02 = getField("Anzahl02").value * (this.getField("Preis02").value+"").replace(",",".");
var TSumme03 = getField("Anzahl03").value * (this.getField("Preis03").value+"").replace(",",".");
var TSumme04 = getField("Anzahl04").value * (this.getField("Preis04").value+"").replace(",",".");
var ZSVKi = TSumme01 + TSumme02 + TSumme03 + TSumme04;
getField("ZSVK").value = ZSVKi;
if (ZSVKi < 50)
{
this.getField("Versandkosten").value = 5.5;
SummeVKi = 5.5;
}
else
{
if (ZSVKi < 100)
{
this.getField("Versandkosten").value = 2.35;
SummeVKi = 2.35;
}
else
{
if (ZSVKi >= 100)
{
this.getField("Versandkosten").value = 0.0;
SummeVKi = 0.0;
}
};
};
var NNGeb = getField("SummeNachnahme").value
var Gesamtsumme = ZSVKi + SummeVKi + NNGeb;
getField("Summe01").value = TSumme01;
getField("Summe02").value = TSumme02;
getField("Summe03").value = TSumme03;
getField("Summe04").value = TSumme04;
var ZSVKj = (this.getField("ZSVK").value+"").replace(",",".");
if (ZSVKj > 0)
{
getField("Summe").value = Gesamtsumme;
}
else
getField("Summe").value = 0.0;
}
TSummeXY = Zeilenweise Teilsumme (Anzahl * Einzelpreis)
ZSVK = ZwischenSumme für VersandKosten (Von dieser Summe hängt ja ab, ob ein Versandzuschlag erhoben wird, und in welcher Höhe).
NNGeb = Nachnahmegebühr (Je nach dem, ob das Optionsfeld Nachnahme aktiviert ist oder nicht, werden die Kosten mit aufaddiert, oder nicht).
Die lette if-Bedingung soll den Endbetrag auf 0 setzen, wenn kein Artikel ausgewählt ist, weil es unschön aussieht, wenn bei sonst leerem Formular die Versandkosten und ggf. die Nachnahme als Endbetrag stehen bleiben.