Mehrere Numerische Felder auf Gleichheit überprüfen

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
jkcd
Beiträge: 5
Registriert: 03.03.2015, 09:20

Mehrere Numerische Felder auf Gleichheit überprüfen

Beitrag von jkcd » 27.03.2015, 11:36

Hallo zusammen,

zuerst einmal Hallo, Griaß eich :)

Vielleicht kann mir eine/r helfen bei meiner Frage. (Bin erst seit kurzem mit LCD am werkeln und somit noch nicht gefestigt in der Materie).
Habe das Forum schon durchgeforstet aber bis jetzt noch nichts dergleichen gefunden was mich in meiner Problemstellung helfen könnte.
Falls es so eine Frage schon mal gegeben hat oder schon irgendeine Hilfestellung dergleichen vorhanden ist, bitte ich schon mal um Entschuldigung :)

Folgendes:

Ich möchte gerne bei einem vorhandenen Formular, wo die Werte eingegeben worden sind, am Ende überprüfen lassen ob sich die Werte halbwegs gleichen und nicht irgendwie Kommafehler sich eingeschlichen haben oder falsch abgelesen worden ist.
Sprich das statt 0.5 auf einmal 5 eingegeben wird oder das statt 1.76 der Wert 2.76...

Die Anzahl der Felder ist dynamisch. Das hängt davon ab wieviele Werte eingegeben worden ist. Somit start ich bei der Schleife nicht bei i sonder schon bei i+1
 
Mein Gedanke bis jetzt sieht bis jetzt so aus:

do
{
var tempWert=xfa.resolveNode("page.x.numeric[" + $.i +"]")
$.i++;
}
while $.i < page.maxAnzahl;
$.i=0;

do
{
 if (tempWert > (1.2*tempWert[i-1]))
{
xfa.host.messageBox("Bitte Eingabe überprüfen")
}
else if (tempWert < (0.8*tempWert[i-1]))
{
xfa.host.messageBox("Bitte Eingabe überprüfen")
}
}
while $.i < page.maxAnzahl


Bin ich mit meinem Gedankenexperiment schon auf dem Holzweg? Kann das so überhaupt funktionieren? Bitte Feedback :)
Danke schön




BAlheit
Beiträge: 842
Registriert: 16.08.2013, 12:22

Mehrere Numerische Felder auf Gleichheit überprüfen

Beitrag von BAlheit » 27.03.2015, 12:04

Probleme:

Wenn eine Variable (tempWert) in einem { } Bereich definiert wird, ist sie nur in diesem Bereich gültig.

An anderer Stelle wird tempWert als einfache Variable und als Array verwendet.

Bernd Alheit

jkcd
Beiträge: 5
Registriert: 03.03.2015, 09:20

Mehrere Numerische Felder auf Gleichheit überprüfen

Beitrag von jkcd » 27.03.2015, 12:30

:) Danke für den Hinweis ... Global Deklarieren hätt ich bedenken sollen ;) Aber sonnst in diese Richtung könnte es Ihrer/deiner Meinung nach funktionieren oder eher doch einen anderen Weg suchen?

BAlheit
Beiträge: 842
Registriert: 16.08.2013, 12:22

Mehrere Numerische Felder auf Gleichheit überprüfen

Beitrag von BAlheit » 27.03.2015, 13:55

Ich würde die Felder durchgehen und den kleinsten und den größten Wert ermitteln. Danach die Abweichung zwischen kleinsten und größten Wert prüfen.

Bernd Alheit

jkcd
Beiträge: 5
Registriert: 03.03.2015, 09:20

Mehrere Numerische Felder auf Gleichheit überprüfen

Beitrag von jkcd » 31.03.2015, 11:37

@BAlheit: Danke sehr :)

jkcd
Beiträge: 5
Registriert: 03.03.2015, 09:20

Mehrere Numerische Felder auf Gleichheit überprüfen

Beitrag von jkcd » 08.04.2015, 11:18

Hab die Überprüfung zum Laufen gebracht aber hat einen Schönheitsfehler...
Wenn die erste Zahl z.B. 5 ist und die zweite 0.5 funktioniert meine Abfrage nicht mehr.


for ($.j=1; $.j < cylMax; $.j++)
 {
   if ((xfa.resolveNode("page1.pfrmValveWear.numValveEV1[" + $.j + "]").rawValue > xfa.resolveNode("page1.pfrmValveWear.numValveEV1[" + ($.j-1) + "]").rawValue*(1.1)))
 {
   xfa.host.messageBox("Bitte Werte Überprüfen");
 }
else if ((xfa.resolveNode("page1.pfrmValveWear.numValveEV1[" + $.j + "]").rawValue < xfa.resolveNode("page1.pfrmValveWear.numValveEV1[" + ($.j-1) + "]").rawValue*(0.9)))
{
xfa.host.messageBox("Bitte Werte überprüfen");
}

Alle andereren Felder funktionieren aber die erste Abfrage wird mir nicht übernommen. Mit $.j=0 funktioniert die Abfrage auch nicht...

Als alternative dazu schon probiert die einzelnen Werte in einem anderen Array abspeichern aber da kommt auch nichts raus.

var k;

for ($.j=1; $.j < cylMax; $.j++)
      {
       oEV1[k]=page1.pfrmValveWear.numValveEV1[" + $.j + "].rawValue;  
       k++;                      
      }     
      
      for (k; k<variables.cylMax; k++)
      {
       if (oEV1[k] > oEV1[k]*1.1)
       {
        xfa.host.messageBox("Wert zu gross");
       }
       else if (oEV1[k] < oEV1[k]*0.9)
       {
        xfa.host.messageBox("Wert zu klein"); 
       }

Steh gerade ziemlich auf der Leitung und seh vor lauter Code auskommentieren schon gar nichts mehr.

Kann mir bitte einer auf die Sprünge helfen?

jkcd
Beiträge: 5
Registriert: 03.03.2015, 09:20

Mehrere Numerische Felder auf Gleichheit überprüfen

Beitrag von jkcd » 15.04.2015, 08:13

Läuft jetzt ohne Probleme. :)

Antworten