[GastForen Programme Web/Internet PDF Grundlagen / Web / eForms Berechnung von Feldern nur, wenn es was zu berechnen gibt ...???

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Web/Internet - Webdesign, eForms
Themen
Beiträge
Moderatoren
Letzter Beitrag

Berechnung von Feldern nur, wenn es was zu berechnen gibt ...???

boeboe
Beiträge gesamt: 36

10. Jul 2012, 16:59
Beitrag # 1 von 5
Bewertung:
(4758 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, ich versuche einmal mein Problem (oder meinen Wunsch) zu beschreiben:
Ich habe ein Auftragsformular. Das besteht aus neun Zeilen. In jeder Zeile wird automatisch aus der eingegebenen Menge und dem eingegebenen Einzelpreis ein Gesamtpreis errechnet. Das klappt hervorragend. Alle Gesamtpreise werden in einer Summe zum Auftragswert addiert.

Nun werden aber nicht immer alle Zeilen ausgefüllt, so dass ich mehrere Gesamtpreise in meinem Formular habe, die den Wert 0,00 € haben. Das sieht nicht schön aus.

Gibt es eine Möglichkeit, dass nur ein Gesamtpreis erscheint, wenn ich den Feldern Menge und/oder Einzelpreis einen Eintag gemacht habe?

Ich vermute, das ist nur mit einem Script zu lödsen. Da meine Programierkenntnisse gleich NULL sind, wäre es toll, wenn mich da mal jemand an die Hand nehmen könnte.

Danke für alle Tips!

boeboe

Danke für
X

Berechnung von Feldern nur, wenn es was zu berechnen gibt ...???

Max Wyss
Beiträge gesamt: 532

12. Jul 2012, 18:18
Beitrag # 2 von 5
Beitrag ID: #497913
Bewertung:
(4690 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Dieses Szenario ist gar nicht selten. Und es ist äusserst löblich, dass diese Frage überhaupt gestellt wird. Tatsache ist, dass in vielen Fällen eine Berechnung erst dann "legale" Resultate produziert, wenn alle Eingabewerte auch "legal" sind.

Die Implementierung ist mit JavaScript, aber es ist nicht sooo kompliziert.

Ganz allgemein wird in der Berechnung zuerst geprüft, ob der Eingabewert gültig und "legal" ist, und zwar für alle Eingabewerte. Wenn es nur darum geht, einen Wert zu haben, dann ist jeder Wert, welcher NICHT dem Default-Wert entspricht, gültig. Erst wenn diese Bedingung für alle Eingabewerte stimt, wird die Berechnung durchgeführt.

In Pseudocode sieht das so aus:

if (this.getField("Eingabe1").value != this.getField("Eingabe1").defaultValue && this.getField("Eingabe2").value != this.getField("Eingabe2").defaultValue) {
// Code für Berechnung
} else {
// nichts oder Code wenn keine Berechnung erfolgt
}

Hinweis: Die Zeile beginnend mit if ist eine sehr lange Zeile, und sie geht bis zur geschweiften Klammer

Wenn das ganze nun in einer Tabelle, zum Beispiel der erwähnten Bestelliste eingebaut werden soll, ist es äusserst empfehlenswert, den ganzen Berechnungscode für diese Tabelle in ein einziges Script zusammenzufassen. Damit wird die Berechnung schneller und sie ist besser zu kontrollieren.

Damit nun der Totalpreis nur dann erscheint, wenn tatsächlich eine Zeile gültig ist, kann eine Vereinfachnung gemacht werden. Die Berechnung für das Zeilentotal ist wie oben gezeigt zu schützen. Zusätzlich ist nun noch ein Zähler einzuführen, welcher ursprünglich 0 ist, aber für jede Zeile mit gültiger Berechnung erhöht wird. Für die Berechnung des Totals wird dann geprüft, ob der Zähler grösser als null ist; wenn ja, wird addiert, sonst nicht. (der Umweg über den Zähler erlaubt auch die Eingabe von Artikeln zum Preis 0; in diesem Fall ist 0 ein legaler Wert, wenn er aus der Zeilenberechnung resultiert).

Es ist mir klar, dass dies sehr theoretisch klingt. Für ein konkretes Besipiel müssten entsprechende Vorgaben gemacht werden.

HTH.

Max Wyss.


als Antwort auf: [#497807]

Berechnung von Feldern nur, wenn es was zu berechnen gibt ...???

boeboe
Beiträge gesamt: 36

12. Jul 2012, 18:46
Beitrag # 3 von 5
Beitrag ID: #497915
Bewertung:
(4673 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Max.

Vielen Dank für die Ausführliche Erklärung. Ich muss aber gestehen, ich verstehe nur Bahnhof....

Ich hatte auch schon vermutet, dass es ohne genauere Angaben nicht möglich ist, mir zu helfen.

Ich habe das Formular mal auf meiner Internetseite geparkt:
http://www.boeckstiegel.org/formular_ipad.pdf

Da fällt mir noch ein Wunsch ein, der eventuell Umsetzbar ist:
Ich habe ja neun Zeilen die mit einer Pos.-Nr. beginnen. Derzeit trage ich die händisch ein. Kann sich diese Nummer auch automatisch einsetzen, solbald ein Einzelpreis eingegeben wird? Manchmal sind die Beschreibungen recht lang und
ich brauche mehr als eine Textzeile. Deshalb kann ich das nicht von der Textzeile abhängig machen.

Beispiel:
Produkt EINS braucht für die Beschreibung die Zeilen 1 - 3. Der Einzelpreis kommt in die erste Zeile. Hier wird die Pos.-Nr. 1 vergeben.

Produkt ZWEI steht in den Zeilen 4 - 7. Kann jetzt in der ersten Spalte der Zeile 4 automatisch die Pos.-Nr. vergeben werden, oder ist das zu viel verlangt und zu kompliziert?

Wenn geht, staune ich Bauklötze ...

Danke an alle Helfer!!!


als Antwort auf: [#497913]

Berechnung von Feldern nur, wenn es was zu berechnen gibt ...???

boeboe
Beiträge gesamt: 36

22. Jul 2012, 21:43
Beitrag # 4 von 5
Beitrag ID: #498426
Bewertung:
(4556 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe jetzt mal bei den Eigenschaften des Formularfeldes Gesamtpreis1 (GP1 )
folgendes Script zur Berechnung angegeben:

if (this.getField("Menge1").value != this.getField("Menge1").defaultValue && this.getField("EP1").value != this.getField("EP1").defaultValue) {
// Code für Berechnung
} else {
// nichts oder Code wenn keine Berechnung erfolgt
}

aber er berechnet nichts ...

Oder wo gehört das hin, falls das überhaupt so richtig ist ????

Danke für die Hilfe!!!


als Antwort auf: [#497915]

Berechnung von Feldern nur, wenn es was zu berechnen gibt ...???

Max Wyss
Beiträge gesamt: 532

23. Jul 2012, 09:14
Beitrag # 5 von 5
Beitrag ID: #498436
Bewertung:
(4528 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Klar passiert nichts, denn für die aktuelle Berechnung sind nur Platzhalter vorhanden.

Das Script gehört ins Calculate Event des Felds GP1.

Unter der Annahme, dass Menge 1 mit EP1 multipliziert werden soll, wäre der Berechnungscode folgender:

event.value = this.getField("Menge1").value * this.getField("EP1").value ;

und der Code wenn keine Berechnung wäre dann:

event.value = "" ;


HTH

Max Wyss.


als Antwort auf: [#498426]
X