Hilfe zur If-AnweisungIch versuche gerade, ein Skript zu schreiben, das eine Spalte aus meiner Datentabelle liest und je nach Wert dieser Spalte einen anderen Satz von Funktionen ausführt. Beispiel:
Wenn die Daten in Spalte A = A sind, erstellen Sie eine neue Spalte mit dem Namen „A“ und führen Sie die folgenden Funktionen (A bis C) aus.
Wenn die Daten in Spalte A = B sind, erstellen Sie eine neue Spalte mit dem Namen „B“ und führen Sie stattdessen die folgenden Funktionen (D bis F) aus.
Andernfalls erstellen Sie eine neue Spalte mit dem Namen „N/A“.
Wenn ich mein Skript ausführe, wird immer die neue Spalte „N/A“ erstellt, selbst wenn der Wert „A“ oder „B“ ist. Es wird auch keine der Funktionen ausführen, die ich für die Bedingungen „A“ und „B“ geschrieben habe. Ich habe das Gefühl, dass ich etwas sehr Offensichtliches übersehe.
dt = Current Data Table();
If(
:Column A == "A", dt << New Column( "A", character, nominal ),
Function A
Function B
Function C
:Column B == "B", dt << New Column( "B", character, nominal ),
Function D
Function E
Function F
dt << New Column( "N/A", character, nominal )
)
Automatisierung und SkriptingKonsumenten- und MarktforschungDatenzusammenführung und -bereinigungMassenanpassungQualitäts- und ProzesstechnikBetreff: Hilfe bei der If-AnweisungGuter Punkt über die Änderung des Spaltennamens. Es erschwert das Schreiben der JSL für die nachfolgende Verarbeitung. Wahrscheinlich möchten Sie für alle Fälle denselben Spaltennamen, etwa "Status" oder "Aktionstyp".
Betreff: Hilfe bei der If-AnweisungIn Anbetracht der von Ihnen angegebenen Szenarien generiert das folgende Skript die 3 Fälle
A existiert in Spalte A
B existiert in Spalte B
Weder A noch B existieren

Names Default To Here( 1 );
A = Function( {},
Show( "Function A" )
);
B = Function( {},
Show( "Function B" )
);
C = Function( {},
Show( "Function C" )
);
D = Function( {},
Show( "Function D" )
);
EE = Function( {},
Show( "Function EE" )
);
F = Function( {},
Show( "Function F" )
);
// First Example Column A has the value A
dt1 = New Table( "Example1",
Add Rows( 1 ),
New Column( "Column A", Character, "Nominal", Set Values( {"A"} ) ),
New Column( "Column B", Character, "Nominal", Set Values( {""} ) )
);
Wait( 5 );
If(
:Column A[1] == "A",
dt1 << New Column( "A", character, nominal );
A();
B();
C();,
:Column B[1] == "B", dt1 << New Column( "B", character, nominal );
D();
EE();
F();
,
dt1 << New Column( "N/A", character, nominal )
);
// Second Example Column B has the value B
dt2 = New Table( "Example2",
Add Rows( 1 ),
New Column( "Column A", Character, "Nominal", Set Values( {""} ) ),
New Column( "Column B", Character, "Nominal", Set Values( {"B"} ) )
);
Wait( 5 );
If(
:Column A[1] == "A",
dt2 << New Column( "A", character, nominal );
A();
B();
C();,
:Column B[1] == "B", dt2 << New Column( "B", character, nominal );
D();
EE();
F();
,
dt2 << New Column( "N/A", character, nominal )
);
// Third Example Neither column A has and A nor Column B has a B
dt3 = New Table( "Example3",
Add Rows( 1 ),
New Column( "Column A", Character, "Nominal", Set Values( {""} ) ),
New Column( "Column B", Character, "Nominal", Set Values( {""} ) )
);
Wait( 5 );
If(
dt3:Column A[1] == "A",
dt3 << New Column( "A", character, nominal );
A();
B();
C();,
dt3:Column B[1] == "B", dt3 << New Column( "B", character, nominal );
D();
EE();
F();
,
dt3 << New Column( "N/A", character, nominal )
);
Ich vermute, dass dies nicht das ist, was Sie wollen
Betreff: Hilfe bei der If-AnweisungWenn Geheimnisse könnte helfen. Kommas trennen die Klauseln in einer if-Anweisung. Semikolons trennen Anweisungen innerhalb Eine Klausel.
Sie wollen wahrscheinlich so etwas
dt = Current Data Table();
If( :Column A == "A", // condition, followed by a comma
dt << New Column( "A", character, nominal ); // one or more stmts
Function A(); // with ; separators
Function B();
Function C(); // last statement has optional ; and required comma next line
, /* else if */ :Column B == "B", // 2nd condition followed by comma
dt << New Column( "B", character, nominal );
Function D();
Function E();
Function F() // again, another comma. ; omitted for example...I prefer to use them
, /* else */
dt << New Column( "N/A", character, nominal ) // no more commas, this is the otherwise
);Ich mag es, /* else if */ und /* else */ einzurücken und zu kommentieren, damit es leichter zu verstehen ist.