Cómo utilizar el valor de mi bucle For Each para generar nuevos scripts de tablaEstoy repasando los scripts de tablas de datos existentes y creando un duplicado de cada script con algunas modificaciones.
Quiero insertar esos nombres de scripts de tabla en los scripts de tabla generados.
El resultado que obtengo simplemente inserta la palabra "script" en mis scripts de tabla generados en lugar del valor de cadena real en scriptList
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
scriptList = dt << Get Table Script Names;
For Each({script}, scriptList,
If ((!Contains(scriptList, "Run "||script)),
dt << New Script("Run "||script,dt=Current DataTable();w=eval(dt << get table property((script)));w << set window title((script)));
);
);
Automatización y secuencias de comandosRe: Cómo usar el valor de mi bucle For Each para generar nuevos scripts de tablaAlgo de manejo de expresiones combinado con Inserte una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute Deberia trabajar. Aquí hay un ejemplo:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
For Each({script_name}, dt << Get Table Script Names,
If((!Contains(script_name, "Run " || script_name)),
script_expr = dt << Get Script(script_name);
Eval(Substitute(
Expr(
dt << New Script("Run " || _script_name_,
Local({w},
w = _new_script_;
w << set window title(_script_name_)
)
);
),
Expr(_script_name_), script_name,
Expr(_new_script_), Name Expr(script_expr)
))
)
);Re: Cómo usar el valor de mi bucle For Each para generar nuevos scripts de tablagracias, de hecho está funcionando muy bien
Re: Cómo usar el valor de mi bucle For Each para generar nuevos scripts de tablaHola, supongo que no lo especifiqué como tal en mi pregunta original, pero su solución cambió el comportamiento de mi secuencia de comandos, ya que copia el código de la secuencia de comandos de destino en la nueva secuencia de comandos. Quería mantener la referencia solo al guión original. Aquí está el guión final que estoy usando, tal vez otras personas puedan encontrarlo útil.
dt = Current Data Table();
scriptList = dt << Get Table Script Names;
For Each( {script_name}, scriptList,
If( (!Contains( script_name, "Run" ) & !Contains( scriptList, "Run " || script_name )),
Eval(
Substitute(
Expr(
dt << New Script(
"Run " || script_name,
dt = Current Data Table();
w = Eval( dt << get table property( script_placeholder ) );
w << set window title( script_placeholder );
)
),
Expr(script_placeholder), Char(script_name)
)
)
)
);Re: Cómo usar el valor de mi bucle For Each para generar nuevos scripts de tablaJMP 14 sin trabajo.
Re: Cómo usar el valor de mi bucle For Each para generar nuevos scripts de tablaLa función For Each() es una característica nueva en JMP 16.