Problem mit if und else

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
Xivity
Beiträge: 5
Registriert: 12.02.2014, 19:52

Problem mit if und else

Beitrag von Xivity » 12.02.2014, 20:02

Guten Tag,
ich habe ein, für mich, schwerwiegendes Problem und bin auf der Suche nach einem Ratschlag.

Es sieht wie folgt aus:

Ich habe 3 Felder, A, B und C

In Feld A wird eine Summe berechnet

In Feld B berechne ich über FormCalc die "Prozente" (volle Punktzahl = 100%)

In Feld 3, soll dementsprechend eine Zahl stehen, je nachdem wie hoch die Punkte bzw. % sind.

Das klappt auch so zu 80%

Das Script ist ungefähr:

if (A<="8") C="0"
else
if (A<="9") C="1"
else
if (A>"10") C="2"

In Bezug auf A (Punktzahl)

bei Bezug auf B siehts dann ungefähr so aus:

if (A<="69") C="0"
else
if (A<="79") C="1"
else
if (A>"79") C="2"

Leider hab ich auf einer Seite das Problem, das mir bereits vor "69" (bei Bezug auf B) schon in Feld C "1" angezeigt wird. Somit bei einer niedrigeren Punktzahl ein falscher Wert entsteht. Andererseits wenn ich Bezug auf A nehme, spring es teilweise erst bei 10 auf 1.

Viel schlimmer ist es aber auf der darauffolgenden Seite, da wird bei voller Punktzahl (ergo >"79") plötzlich aus der "2" wieder eine 0.

Beispiel:

Max Pkt. 12

A sind 7 Punkte

C sollte 0 zeigen

A sind 9 Punkte

C sollte 1 zeigen

A sind 11 Punkte

C sollte 2 zeigen

Zeigt aber ab der Punktzahl 10 wieder 0


Bei Bezug auf B

B zeigt 65

C zeigt 0

B steht auf 75

C zeigt 1

B steht auf 98

C zeigt 2

Aber sowie B auf 100 ist zeigt mir C nur noch 0 :(



Ich hoffe jmd. von euch kann ungefähr verstehen worin das Problem besteht und einen Vorschlag/Lösung bereitstellen. Darüber wäre ich sehr dankbar. :)

Ich würde das Dokument auch Hochladen zur Veranschaulichung, leider ist das bei betrieblichen aber immer "schlecht".

MFG

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Problem mit if und else

Beitrag von Merklin » 12.02.2014, 20:32

Guten Abend,

also auf die Schnelle sehe ich schon ein paar Konflikte, die meiner Meinung nach zu Fehlern führen müssen. Du musst nur versuchen Logisch an die Sache herran zu gehen.

Code: Alles auswählen

if (A<="8") C="0"
else
if (A<="9") C="1"
else
if (A>"10") C="2"
Das Script sagt:
  1. Ist A Kleiner oder Gleich 8 dann schreibe in C = 0, Richtig?
  2. Ist A Kleiner oder Gleich 9 dann schreibe in C = 1, Richtig?
Na, dämmert es? Kleiner 9 wäre 8, Richtig. Also was soll das Script schreiben? C=0 oder C=1 ? Da Scripte nichts entscheiden können, wird es wohl streiken.

Das könnte man jetzt so weiter treiben.

Z.B. 3. Ist A Größer 10, dann schreibe in C = 2, Richtig?
Größer 10 ist unendlich, Richtig

Du beziehst dich aber in deinem zweiten Block wieder auf A.
Dort schreibst du aber, das A Kleiner oder Gleich 69 ist, dann C= 0.
Also was jetzt 2 oder 0 ? U.s.w.


VG Merklin





Xivity
Beiträge: 5
Registriert: 12.02.2014, 19:52

Problem mit if und else

Beitrag von Xivity » 12.02.2014, 20:42

Ich hatte schon die Vermutung das die Zahlen für diese "Art" vermutlich zu klein sind.

Das mit A und B sind nur 2 unterschiedliche Formen die ich Versuche, ich benutzte nicht beide gleichzeitig.

Im Endeffekt möchte ich folgendes:

C soll 0 sein wenn:

- Falls ich mich auf A beziehe, zwischen 0 und 8 ist
- Falls ich mich auf B beziehe, zwischen 0 und 69 ist

C soll 1 sein wenn:

- Falls ich mich auf A beziehe, wenn diese 9 ist
- Falls ich mich auf B beziehe, zwischen 70 und 79 ist

C soll 2 sein wenn:

- Falls ich mich auf A beziehe, ab 10
- Falls ich mich auf B beziehe, ab 80


Wie erwähnt, wenn ich mich auf B beziehe klappt es eigentlich wie es soll. Nur sowie B 100 erreicht, wird aus C 0. Das kann ich mir nicht erklären, angegeben ist ja das alles ab 80 bei B eine 2 in C verursachen soll.

Ergo sieht das Script mit bezogen auf B so aus:

if (B<="69") C="0"
else
if (B<="79") C="1"
else
if (B>"80") C="2"

Dieser Block steht dann alleine, dass ist im ersten Post ein wenig falsch rüber gekommen. Ich wollte halt mitteilen das ich es einmal mit A und einmal mit B versuchte habe, aber nie beide gleichzeitig.

Hier klappts auch,

bei z.B. 13 bekomme ich 0, bei 45 bekomme ich 0, bei 75 bekomme ich 1, bei 82 bekomme ich 2 und auch bei 99 bekomme ich 2. Aber sowie B auf 100 springt, wird aus C 0.

Theoretisch müsste ich eigtl. nur wissen, warum C 0 wird wenn B 100 wird, und zwar nur dann. Sonst funktioniert das =/

Verzeih mir, wenn ich mich da etwas zu konfus ausgedrückt habe.

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Problem mit if und else

Beitrag von Merklin » 12.02.2014, 21:00

Hi,

also ich vermute bei dein Problem mit B, das 100 (Prozent) nicht als 100 erkannt wird, sondern als 1 mit zwei Nullen.

Bei der anderen Sache bleibe ich dabei, das es nicht ganz logisch ist.

Du musst den Bereich genau eingrenzen. Das ist schwierig bei 9 und 8.
Du musst schreiben <= 8 aber == 9. Den kleiner als 9 ist 8, 7,6,5,4,3,2,1,0.
Eins von beiden geht nur.

Besser wäre du stellst mal ein Beispiel ein. Dann kann man es besser nachvollziehen.
Und auch anpassen.

VG Merklin


Xivity
Beiträge: 5
Registriert: 12.02.2014, 19:52

Problem mit if und else

Beitrag von Xivity » 12.02.2014, 21:20

Beispiel wäre frühstens morgen früh möglich und das wird von meiner Zeit nen bissle stressig. Leider

Das die 100 eventuell falsch "wahrgenommen" denke ich auch, gibts eine Möglichkeit das irgendwie zu ändern?


Bei der Variante mit A versteh ich das Problem.
Allerdings müsste er bei >10 doch 2 anzeigen, aber dort steht 0 >.<

In der Phase 2 des Dokuments sieht das ja bissle anders aus:

if (A<="17") C="0"
else
if (A<="20") C="1"
else
if (A>"21") C="2"

Hier ist aber das Problem, das ich teilweise vor der 17 schon mal eine 1 dabei ist.

Es ist einfach zum Mäuse melken. Im Endeffekt soll das Feld C doch nur 0, 1 oder 2 anzeigen. Je nachdem wie viel Punkte A anzeigt oder wie viel Prozent bei B stehen.

Ich versuch die Struktur mal zu erläutern:

A= Hier kommt eine Summe raus, von z.b. Wert1+Wert2+Wert3 usw...

B= Heißt Prozent, und hier wird einfach die Summe von A gerechnet, durch die max. Pkt.zahl * 100

z.B. Phase 2 hat max. 26 Pkt und sagen wir A spuckt 26 aus... Ergo wird hier gerechnet:

(26+26)*100

Somit kommt hier 100 raus.

C= Hier soll nun nicht andere stehen wie 0, 1 oder so..
Ob ich mich auf A oder B beziehe ist dabei egal, Hauptsache am Ende steht die richtige Zahl da.

Nun hab ichs mit 2 Methoden versucht:

C erhalten mit Bezug auf A

C müsste bei diesem Beispiel 2 zeigen, tuts aber nicht... (Warum ist ja mittlerweile klar)

C erhalten mit Bezug auf B

Theoretisch müsste C bei B 100 ja 2 zeigen, tuts nicht, vermutlich aufgrund dessen weil das Programm denkt es ist ne 1 mit 2 Nullen, wie du sagst.

Wäre wirklich alles viel Einfach mit der Datei =/

Gibt es vllt einen ganz anderen Ansatz den man wählen könnte? Oder irgendwie die Sache besser einzugreizen? Vllt...

if (A<="8") C="0"
else
if (A=="9") C="1"
else
if (A>"10") && (A<="12) C="2"


Aber kleiner als 12 könnte ja auch wieder 5,6,7,8 sein...
Aff ist das Verzweifelnd.

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Problem mit if und else

Beitrag von Merklin » 12.02.2014, 21:48

Hi,

ja, langsam kommen wir der Sache schon näher.

Also du schreibst.

Code: Alles auswählen

if (A<="8") C="0"
else
if (A=="9") C="1"
else
if (A>"10") && (A<="12) C="2"
Es sollte aber so heißen.

Code: Alles auswählen

if (A<="8") C="0"
else
if (A=="9") C="1"
else
if (A>"10") || (A<="12) C="2"
Das bedeutet: A ist größer oder gleich 10 oder A ist kleiner oder gleich 12.
Erkennst du den Unterschied? Denke an die Logik.

Die anderen Probleme kann man nur lösen, wenn man die Zusammenhänge kennt.
Du schreibst zwar sehr ausführlich, aber wiederholst dich auch. Dadurch kommen wir nicht weiter. Nicht falsch verstehen, ist jetzt nicht böse gemeint. Aber ohne das man die Zusammenhänge kennt, kann man da nichts machen. Da spielen viele Faktoren eine Rolle.
Deswegen das Beispiel.

VG Merklin



Xivity
Beiträge: 5
Registriert: 12.02.2014, 19:52

Problem mit if und else

Beitrag von Xivity » 12.02.2014, 21:50

Erstmal danke.

Ich versteh das nicht böse und bin dir sehr dankbar für deine Bemühungen. Ich werde morgen eine kürzere Version einfach mal beifügen. Vllt. Ergibt sich ja vor meinem Feierabend schon eine Lösung.

Trotzdem, auch gern nochmal, danke für deine Zeit :-)

Benutzeravatar
Merklin
Beiträge: 1857
Registriert: 04.04.2009, 17:03

Problem mit if und else

Beitrag von Merklin » 12.02.2014, 22:05

Hi,

bin gerade auf etwas gestoßen. Du hast ein falsches Feld verwendet. Nimm kein Textfeld sondern ein Dezimal oder Numerisches Feld.

Siehe Beispiel.

VG Merklin
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Xivity
Beiträge: 5
Registriert: 12.02.2014, 19:52

Problem mit if und else

Beitrag von Xivity » 13.02.2014, 09:58

Morgen,

genau das wars...

Ich hab mir nen Kopf über die Formel gemacht, dabei war die Lösung so simpel...
Ich danke dir vielmals! :D

Antworten