[GastForen Programme Web/Internet PDF Grundlagen / Web / eForms Summe wird falsch berechnet in PDF Formular

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

Summe wird falsch berechnet in PDF Formular

dape
Beiträge gesamt: 6

6. Aug 2013, 09:39
Beitrag # 1 von 11
Bewertung:
(24696 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen,

ich bin wirklich fast am verzweifeln. Versuche gerade eine Matrix in PDF aufzubauen in denen Werte eingetragen werden können. Zeilen und Spalten sollen summiert werden.

Leider berechnet mir PDF die einfache Formel:

getField("SummeGesamt").value = getField("Summe1").value + getField("Summe2").value + getField("Summe3").value;

wenn ich bspw. 2 und 3 eintrage nicht 5 sonder 23.

Er schreibt die Zahlen einfach hintereinander!!!

Was mache ich falsch. Vielen Dank für eure Antworten.

Mfg
X

Summe wird falsch berechnet in PDF Formular

dape
Beiträge gesamt: 6

6. Aug 2013, 10:00
Beitrag # 2 von 11
Beitrag ID: #515912
Bewertung:
(24684 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zusatz:

bin immer noch auf der Fehlersuche:

wenn alle zellen einer Berechnung ausgefüllt sind wird die Gesamtsumme richtig berechnet.

Falls eine Zelle nicht ausgefüllt ist, schreibt Adobe einfach die Zahlen hintereinander.

Ich werd noch verückt!


als Antwort auf: [#515911]

Summe wird falsch berechnet in PDF Formular

Uwe Laubender
Beiträge gesamt: 5316

6. Aug 2013, 10:01
Beitrag # 3 von 11
Beitrag ID: #515913
Bewertung:
(24684 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, dape!

Spontan würde ich mal sagen, dass Deine Felder keine Zahlenwerte ausgeben, sondern text-Strings. Und die werden durch den +-Operator aneinandergekettet.


als Antwort auf: [#515911]

Summe wird falsch berechnet in PDF Formular

dape
Beiträge gesamt: 6

6. Aug 2013, 10:06
Beitrag # 4 von 11
Beitrag ID: #515915
Bewertung:
(24672 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

danke für die schnelle Antwort.

Im Editor sind alle Zellen auf Format "Zahlen" gesetzt.

Das hilft mir schon weiter, dann werde ich mal versuchen im Java Script Integer Variablen zu deklarieren und diese zu berechnen und erst am Schluss wieder der Gesamtsumme zuzuweisen.


als Antwort auf: [#515913]

Summe wird falsch berechnet in PDF Formular

Uwe Laubender
Beiträge gesamt: 5316

6. Aug 2013, 10:20
Beitrag # 5 von 11
Beitrag ID: #515918
Bewertung:
(24665 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, dape!
Dann frage ab, ob ein Feld leer ist.
Meine Vermutung ist, dass ein leeres Feld nicht "0" als Zahlenwert ausgibt, sondern entweder "NaN" (not a number) oder einen leeren string "".

Du müsstest also den Wert "0" selbst eintragen:

Zum Beispiel so (Annahme eines leeren Strings):

Code
v1 = getField("Summe1").value; 
if(v1 === ""){v1 = 0};

v2 = getField("Summe2").value;
if(v2 === ""){v2 = 0};

//Bei allen Feldern wiederholen oder eine Funktion schreiben, die das erledigt.
//. . .

getField("SummeGesamt").value = v1 + v2 + v3;


Oder so, wenn das Ergebnis eines leeren Feldes NaN ist:

Code
v1 = getField("Summe1").value; 
if(isNaN(v1)){v1 = 0};

v2 = getField("Summe2").value;
if(isNaN(v2)){v2 = 0};

//. . .


Wobei ich nicht weiss, ob "isNaN()" in Acrobat Scripting als Methode zur Verfügung steht.


als Antwort auf: [#515913]

Summe wird falsch berechnet in PDF Formular

dape
Beiträge gesamt: 6

6. Aug 2013, 10:22
Beitrag # 6 von 11
Beitrag ID: #515919
Bewertung:
(24664 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Da leider Javascript keine Datentypen kennt, kann man auch keine zuweisen:)

Hat jemand eine Idee wie man sicher gehen kann das das PDF keine Zeichenketten berechnet?

Vielen Dank!


als Antwort auf: [#515915]

Summe wird falsch berechnet in PDF Formular

Uwe Laubender
Beiträge gesamt: 5316

6. Aug 2013, 10:35
Beitrag # 7 von 11
Beitrag ID: #515920
Bewertung:
(24648 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, dape!

Einen String einer Zahl in eine Zahl zu verwandeln ginge in Deinem Beispiel so:

Code
v1 = Number(getField("Summe1").value); 


Wobei natürlich zu beachten ist, dass etwaige Kommata vorher in Punkte überführt werden.

Wenn Du aber nur Integer zulässt, ist das aber kein Thema…


als Antwort auf: [#515919]

Summe wird falsch berechnet in PDF Formular

dape
Beiträge gesamt: 6

6. Aug 2013, 10:42
Beitrag # 8 von 11
Beitrag ID: #515921
Bewertung:
(24646 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

du hast genau den richtigen Riecher gehabt!! Vielen Dank!

So funktionierts.

Ich habe es auch nochmal mit Standardwerten je Zelle ("0") versucht, das klappt auch, schaut aber auf dem Formular nicht wirklich toll aus.

Mit deiner Abfrage ob die Variabel "" ist und der Zuweisung der 0 funktioniert auch die Berechnung.

Habe wirklich 2 Tage herumprobiert.

Vielen Dank nochmal!


als Antwort auf: [#515919]

Summe wird falsch berechnet in PDF Formular

dape
Beiträge gesamt: 6

6. Aug 2013, 10:46
Beitrag # 9 von 11
Beitrag ID: #515922
Bewertung:
(24643 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

habe auch nochmal deinen Code:

v1 = Number(getField("Summe1").value);

ausprobiert.

Funktioniert auch einwandfrei.

Der Vorteil ist sogar das man sich die Schleifen spart. Super!!


als Antwort auf: [#515921]

Summe wird falsch berechnet in PDF Formular

Uwe Laubender
Beiträge gesamt: 5316

6. Aug 2013, 11:25
Beitrag # 10 von 11
Beitrag ID: #515923
Bewertung:
(24613 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, dape!
Ja, weil ein leerer String über die Methode Number("") die Zahl 0 auswirft.


als Antwort auf: [#515922]

Summe wird falsch berechnet in PDF Formular

Max Wyss
Beiträge gesamt: 532

25. Aug 2013, 13:15
Beitrag # 11 von 11
Beitrag ID: #516633
Bewertung:
(24281 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das ist der immer wieder abgehandelte und noch viel mehr darübergestolperte Effekt, dass der Wert eines leeren Feldes der leere String "" ist.

(Acrobat) JavaScript kann Zahlen als Zahl oder als String auffassen. Bei der Addtion wird die mathematische Berechnung nur dann angewandt, wenn alle Summanden als Zahl dargestellt werden können. Wenn nicht, wird nicht mathematisch addiert, sondern die Summanden werden als Strings aneinandergehängt.

Genau das ist der Fall, wenn in einer Summe ein leeres Feld (leerer String) vorhanden ist.

In meiner Praxis multipliziere ich den jeweiligen Summanden mit 1, um den Typ Zahl zu forcieren.

Die Formel würde daher so aussehen:

getField("SummeGesamt").value = getField("Summe1").value*1 + getField("Summe2").value*1 + getField("Summe3").value*1 ;

Und damit ist der Fall gelöst.

HTH

Max Wyss.


als Antwort auf: [#515911]
X