hilfdirselbst.ch
Facebook Twitter gamper-media

PlugIns, XTensions und Knowhow: Publishing-Worker.com

dape
Beiträge: 6
6. Aug 2013, 09:39
Beitrag #1 von 11
Bewertung:
(8559 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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
Top
 
X
dape
Beiträge: 6
6. Aug 2013, 10:00
Beitrag #2 von 11
Beitrag ID: #515912
Bewertung:
(8549 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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] Top
 
Uwe Laubender S
Beiträge: 3991
6. Aug 2013, 10:01
Beitrag #3 von 11
Beitrag ID: #515913
Bewertung:
(8549 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


Hallo, dape!

Spontan würde ich mal sagen, dass Deine Felder keine Zahlenwerte ausgeben, sondern text-Strings. Und die werden durch den +-Operator aneinandergekettet.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515911] Top
 
dape
Beiträge: 6
6. Aug 2013, 10:06
Beitrag #4 von 11
Beitrag ID: #515915
Bewertung:
(8537 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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] Top
 
Uwe Laubender S
Beiträge: 3991
6. Aug 2013, 10:20
Beitrag #5 von 11
Beitrag ID: #515918
Bewertung:
(8530 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515913] Top
 
dape
Beiträge: 6
6. Aug 2013, 10:22
Beitrag #6 von 11
Beitrag ID: #515919
Bewertung:
(8529 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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] Top
 
Uwe Laubender S
Beiträge: 3991
6. Aug 2013, 10:35
Beitrag #7 von 11
Beitrag ID: #515920
Bewertung:
(8513 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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…
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515919] Top
 
dape
Beiträge: 6
6. Aug 2013, 10:42
Beitrag #8 von 11
Beitrag ID: #515921
Bewertung:
(8511 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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] Top
 
dape
Beiträge: 6
6. Aug 2013, 10:46
Beitrag #9 von 11
Beitrag ID: #515922
Bewertung:
(8508 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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] Top
 
Uwe Laubender S
Beiträge: 3991
6. Aug 2013, 11:25
Beitrag #10 von 11
Beitrag ID: #515923
Bewertung:
(8478 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


Hallo, dape!
Ja, weil ein leerer String über die Methode Number("") die Zahl 0 auswirft.
*****
Mit herzlichem Gruß,
Uwe Laubender
als Antwort auf: [#515922] Top
 
Max Wyss
Beiträge: 532
25. Aug 2013, 13:15
Beitrag #11 von 11
Beitrag ID: #516633
Bewertung:
(8145 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Summe wird falsch berechnet in PDF Formular


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] Top
 
X