8.1k Aufrufe
Gefragt in Anwendungen(Java,C++...) von
Problem automatische Prozentberechnung im PDF-Formular (Adobe Acrobat)


Hallo zusammen,

ich habe ein ausfüllbares PDF im Adobe Acrobat erstellt, in dem mehrere Zahlen (A1, A2, A3, B1, B2...C3) eingegeben werden können:
A1
A2
A3
__
Summe A
Prozent A

B1
B2
B3
__
Summe B
Prozent C

C1
C2
C3
__
Summe C
Prozent C

Gesamtsumme (Summe A + Summe B + Summe C)
Prozent gesamt (Prozent A + Prozent B + Prozent C)

Ich habe die Eingabefelder und die Summenfelder im Format Dezimalzahl ohne Nachkommastellen in € angegeben. Die Summen und die Gesamtsumme werden automatisch berechnet.

Jetzt mein Problem: Die Prozentberechnung funktioniert nicht. Hier habe ich natürlich das Format Prozent gewählt. Es kommt immer der Fehlerhinweis: Der eingegebene Wert stimmt nicht mit dem Format des Feldes überein.

Dieses Problem konnte ich lösen, in dem ich das Format auf "kein Format" geändert habe, was mit Sicherheit auch nicht ganz richtig ist. Dadurch wird aber in den Feldern Prozent der Hinweis NaN (Not a number) angegeben.

Es wäre super, wenn Ihr mir helfen könnt. Ich habe an der Seite echt ewig gesessen und würde mich schwarz ärgern, wenn ich die jetzt nicht verwenden kann.

Ach ja, wahrscheinlich hängt das alles auch zusammen, aber mit der jetzigen Einstellung kann ich natürlich auch die Nachkommastellen in der Prozentberechnung nicht auf 0 oder wenigstens auf 2 setzen, da ja kein Format gewählt worden ist.

Hilfe!

Viele Grüße

Eileen

6 Antworten

0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
Was heisst denn "Die Prozentberechnung funktioniert nicht" ?
Was für eine Berechnung wird durchgeführt ?
Irgendwelche Scripte ?

Das Format "Prozent" zeigt einfach nur den zugewiesenen Wert multipliziert mit 100 und mit Prozentzeichen an.
Um einen sinnvollen Prozentwert zu berechnen braucht man aber zwei Werte.

Beispiel:
FeldA: Zahl (10)
FeldB: Zahl (20)
FeldC: Zahl, Summe von FeldA und FeldB (30)
FeldD: Prozent, (welche Werte sollen angezeigt werden?)

Des weiteren:
- Welches Feld zeigt einen falschen Wert an ?
- Was für Eigenschaften hat dieses Feld ?
- Welche Quellen hat dieses Feld ?
- Welche Formeln / Scripts enthält dieses Feld ?
- Was für Formeln / Scripte enthält die Quelle ?
0 Punkte
Beantwortet von
Hallo kicia,

ich habe mich auch schlecht ausgedrückt. Also die eigentliche Berechnung funktioniert, aber mir wird immer dieser Fehler angegeben. "Der eingegebene Wert stimmt nicht mit dem Format des Feldes überein."

In meinem Feld Prozent A habe ich folgende Berechnung hinterlegt:
var f = this.getField("Summe A");
var g = this.getField("Gesamtsumme");
event.value = f.value/g.value*100;
event.value = Math.round(event.value * 100) / 100;

Der Fehlerhinweis kommt für das Feld Prozent A. Eigenschaften des Feldes: Typ Text, Format (da habe ich schon alles durch, von Zahl mit und ohne Nachkommastellen über Prozent bis Kein Format). Die Quelle, meinst Du damit Summe A und Gesamtsumme enthalten keine Scripts, sondern lediglich
Summe A: Summe aus den Feldern A1, A2, A3...
Gesamtsumme: Summe aus den Feldern Summe A, Summe B und Summe C

Vielen Dank schon mal für den Versuch der Hilfe. Ich bin schon mal froh, dass ich das mit dem Runden geschafft habe. Das heißt die Formularberechnung klappt jetzt auch ohne Fehlerhinweis. Aber ich habe immer noch die Angabe NaN, bevor ich Werte in die Felder eingebe, da ich ja jetzt das Format auf "kein Format" gesetzt habe.

Ich hoffe, Du kannst mir helfen.

Viele Grüße
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Eileen,

ich nehme mal an, die Fehlermeldung kommt, wenn die anderen Felder noch leer sind. Das hängt nicht deinem Formularfeld, sondern einfach daran, dass hier eine Division durch Null erfolgt und somit der Fehler angezeigt wird.

Stehen in den Feldern, aus denen die Prozentzahl berechnet werden, Werte größer Null drin, so dürfte keine Fehlermeldung auftauchen. Welches Format du dem Feld zuweist ändert daher nichts an der Fehlermeldung.

Leider habe ich von Javascript keine Ahnung, und kann dir daher nicht sagen, ob man das mit einer entsprechenden Abfrage abfangen kann.

Gruß

M.O.
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
gute Idee:

Probiers mal damit:

var f = this.getField("SummeA");
var g = this.getField("Gesamtsumme");
if( g.value ){
event.value = Math.round( f.value / g.value * 100) / 1;
} else {
event.value = 0;
}


Die Formate würde ich, wie Du es vorher hattest, wieder jeweils zu "zahl" und "prozent" ändern. Ist glaube ich eleganter, wenn auch möglicherweise in Deinem Fall nicht notwendig.
(Anmerkung: oben fehlt eine multiplikation mit 100, weil das Format "prozent" den Wert schon mit 100 multipliziert anzeigt.)
0 Punkte
Beantwortet von kicia Mitglied (939 Punkte)
ups, habe einen Fehler gemacht.
Die Division durch 100 sollte bleiben:
event.value = Math.round( f.value / g.value * 100) / 100;
0 Punkte
Beantwortet von
Vielen Dank für die Antworten. Das Problem mit der Division durch Null hatte ich gerade auch erkannt, nachdem ich das halbe Internet durchforstet habe. Echt ärgerlich, wenn man so lange an einer Sache sitzt und versucht das Problem zu lösen, wo eigentlich gar kein Problem besteht. Naja, jetzt bin ich schlauer. Ich hatte mir ein eigenes Javascript zusammengebastelt, bei dem es dann auch funktioniert hat. Da ich aber eigentlich Javascript nicht kann, habe ich dann doch lieber Deins Kicia genommen, sicher ist sicher.

Also noch mal vielen Dank an alle, die mir geholfen haben.
...