Eine weitere JMP Syntax Challenge ..........: 
Ich versuche, eine IF-Anweisung richtig zu formatieren und kann sie nach unzähligen Iterationen nicht zum Laufen bringen. Schätzen Sie jede Hilfe!
Ich habe eine Datentabelle mit einer Spalte namens "Process Step Description" ..... Datentypzeichen
Ich habe eine andere Spalte in der Tabelle mit dem Namen "Modulfehler", die vom Datentyp numerisch / kontinuierlich ist. Ich erstelle es erfolgreich mit dem folgenden Skriptsegment
Ich möchte den Wert der Zelle in der Spalte "Modulfehler" basierend auf dem Wert in der Zelle "Prozessschrittbeschreibung" wie folgt festlegen:
Beschreibung des Prozessschritts .................. Modulfehler
Ausgehende Qualitätsprüfung .................... 0
Gerät fällt aus ............................................ 1
Ich habe die folgenden Befehle in meinem Skript; Soweit ich das beurteilen kann, funktioniert alles richtig, bis auf die IF-Anweisung selbst
dt << Neue Spalte ("Modulfehler");
Spalte ("Modulfehler") << Datentyp (Numerisch, Format ("Fixed Dec", 1,0));
Spalte ("Modulfehler") << Modellierungstyp (fortlaufend);
If (Prozessschritt Beschreibung == "Einheit fällt aus", ("Modulfehler" = 1), ("Modulfehler" = 0));
Es könnte etwas mit den Anführungszeichen zu tun haben, da ich immer durch die Regeln für einfache und doppelte Anführungszeichen verwirrt bin, aber ich habe so viele Permutationen ausprobiert und nichts scheint zu funktionieren
Vielen Dank im Voraus
SkriptingBetreff: Eine weitere JMP-Syntax-Herausforderung .......... :::(Gibt es Nachrichten im Protokoll?
Können Sie ein Beispiel Ihrer Daten anhängen?
Betreff: Eine weitere JMP-Syntax-Herausforderung .......... :::(Vielen Dank!! Von den von Ihnen vorgestellten Optionen ist die Formelimplementierung für mich die intuitivste. Ich dachte, vielleicht müsste das "Wenn" als Formel implementiert werden, war mir aber nicht sicher; Ich habe durch das vorhandene Skriptsegment das folgende ersetzt. Leider wird immer noch nur ein "." In der Spalte Modulfehlerdaten stimmt also immer noch etwas nicht. Die neue Spalte wird erstellt und der Datentyp ist korrekt, aber die "if-Logik" scheint nicht implementiert zu werden.
Vielen Dank für weitere Ratschläge. Bei Bedarf kann ich auch weitere Informationen bereitstellen.
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( If( :Proceess Step Description == "Unit fails", 1, 0 ) )
);Betreff: Eine weitere JMP-Syntax-Herausforderung .......... :::(Könnte es so einfach wie ein Tippfehler sein? Ändern Sie "Proce e ss "bis" verarbeiten "
Betreff: Eine weitere JMP-Syntax-Herausforderung .......... :::(Ja so einfach! Funktioniert jetzt; Vielen Dank!
Betreff: Eine weitere JMP-Syntax-Herausforderung .......... :::(Das Problem, das Sie haben, ist, dass Sie die Spaltenreferenzen nicht richtig erfassen. Wenn Sie auf eine Spalte in JSL verweisen, wird der Spaltenname mit einem ":" versehen, um anzuzeigen, dass es sich um eine Spaltenreferenz handelt. Während Sie die Column () - Funktion in offenem Code verwenden können, um auf eine Spalte zu verweisen, wird dies normalerweise verwendet, wenn eine Spalte über eine Speichervariable referenziert wird
myColumn = "Process Step Description";
column( myColumn ) << ……..
Im Folgenden finden Sie drei verschiedene Möglichkeiten, um das zu erreichen, was Sie benötigen. Ich schlage vor, dass Sie den folgenden Code studieren und das Scripting-Handbuch lesen, um ein umfassendes Verständnis des Umfangs von Spalten und Speichervariablen zu erhalten
Names Default To Here( 1 );
dt = New Table( "Example",
Add Rows( 10 ),
New Column( "Proceess Step Description",
Character,
"Nominal",
Set Values(
{"Unit Fails", "Outgoing Quality Check", "Unit Fails", "Unit Fails",
"Outgoing Quality Check", "Outgoing Quality Check", "Unit Fails",
"Outgoing Quality Check", "Unit Fails", "Outgoing Quality Check"}
)
)
);
dt << New Column( "Module Failures" );
:Module Failures <<
data type( Numeric, Format( "Fixed Dec", 1, 0 ) );
:Module Failures << Modeling Type( Continuous );
For Each Row(
If( :Proceess Step Description == "Unit Fails",
:Module Failures = 1,
:Module Failures = 0
)
);
// Or you can define your new column as a formula column
dt << New Column( "Module Failures 2",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula(
If( :Proceess Step Description == "Unit Fails",
1,
0
)
)
);
// or If the reference variable changes you may want to
// use the As Column()
zippy="Process Step Description";
dt << New Column( "Module Failures 3",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula(
If( as column(dt, zippy) == "Unit Fails",
1,
0
)
)
);
Betreff: Eine weitere JMP-Syntax-Herausforderung .......... :::(Übrigens benötigen Sie die If () - Funktion nicht für Ihren Zweck. Die Equal () -Funktion (oder in diesem Fall der == -Operator) gibt 1 zurück, wenn die beiden Argumente gleichwertig sind, oder 0, wenn dies nicht der Fall ist. Dieses Skript ist also etwas prägnanter.
dt << New Column( "Module Failures",
data type( Numeric ),
Format( "Fixed Dec", 1, 0 ),
Modeling Type( Continuous ),
Formula( :Process Step Description == "Unit fails" )
);