Ayuda con la declaración IfActualmente estoy intentando escribir un script que lea una columna de mi tabla de datos y ejecute un conjunto diferente de funciones según el valor de esa columna. Por ejemplo,
Si los datos de la columna A = A, cree una nueva columna llamada "A" y ejecute las funciones (A a C) siguientes.
Si los datos de la columna A = B, cree una nueva columna llamada "B" y ejecute las funciones (D a F) siguientes.
De lo contrario, cree una nueva columna llamada "N/A".
Cuando ejecuto mi script, siempre creará la nueva columna "N/A" incluso si el valor es "A" o "B". Tampoco ejecutará ninguna de las funciones que he escrito para las condiciones "A" y "B". Siento que me estoy perdiendo algo muy obvio.
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 )
)
Automatización y secuencias de comandosInvestigación de Consumidores y MercadosCombinación y limpieza de datosLa personalización en masaIngeniería de Calidad y ProcesosRe: Ayuda con la instrucción IfBuen punto sobre el cambio de nombre de columna. Hace que sea más difícil escribir el JSL para el procesamiento posterior. Probablemente desee el mismo nombre de columna para todos los casos, algo así como "estado" o "tipo de acción".
Re: Ayuda con la instrucción IfDados los escenarios que especificó, el siguiente script genera los 3 casos
A existe en la columna A
B existe en la columna B
Ni A ni B existen

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 )
);
Es mi suposición, que esto no es lo que quieres
Re: Ayuda con la instrucción Ifsi los secretos podría ayudar. Las comas separan los cláusulas en una sentencia if. El punto y coma separa declaraciones dentro de una cláusula.
Probablemente quieras algo como esto
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
);Me gusta sangrar y comentar /* else if */ y /* else */ para que sea más fácil de seguir.