Seleccione tabla, luego columnasHola, soy nuevo en el uso de JMP y JSL y tengo problemas para crear un script que selecciona una tabla, luego 2 columnas y luego hace algo con eso.
Aquí hay un ejemplo
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> 0,
Print("Table selected: "||dtName[1]),
Print("No table selected")
)
);
/* Here I tried several options like
current data table (dt);
dt << get data table;
and other but I cannot find what fits well */
xvar = .;
yvar = .;
win = New Window( "Compared Values",
<<MODAL></MODAL></MODAL>En este ejemplo, estoy probando un script simple donde puedo seleccionar una de las tablas ya abiertas, seleccionar 2 columnas y hacer un gráfico simple. Sin embargo, no logro que el programa reconozca la tabla específica que selecciono.
En el futuro necesitaré interactuar con algunas tablas al mismo tiempo y seleccionar diferentes columnas de diferentes tablas para obtener mis resultados. Pensé que este guión sería un comienzo fácil. Estaría muy agradecido si alguien también pudiera brindarme una breve explicación de por qué no puedo seleccionar la tabla que elijo en el primer cuadro, o cómo mejorarla, junto con la solución a mi script.
¡Gracias!
Automatización y secuencias de comandosCompartir y comunicar resultadosRe: Seleccionar tabla y luego columnasLe sugiero que lea acerca de las ventanas modales en la Guía de secuencias de comandos.Sinceramente, te sugiero que leas toda la Guía de secuencias de comandos.
Ayuda==>Biblioteca de documentación JMP
Re: Seleccionar tabla y luego columnasMuchas gracias, tus ejemplos aclaran la mayoría de mis preguntas. Mi principal problema era cómo señalar la tabla para que mi código funcionara, ahora que veo todas estas opciones diferentes, queda muy claro dónde estaban mis errores.
Una cosa más, cuando dices " Las ventanas modales tienen algunas acciones predeterminadas con los botones Aceptar y Cancelar", ¿qué me recomiendan para aprender más al respecto? Tengo la guía de scripting pero no leí sobre ella, ¿crees que puedo encontrarla allí? ¿O sugieres alguna otra fuente?
¡Gracias!
Re: Seleccionar tabla y luego columnasHola,
Encontré problemas adicionales con su secuencia de comandos original que creo haber resuelto (por ejemplo, referencia incorrecta a la tabla de datos en su cuadro de lista de columnas)
Aquí está mi solución, que aún puede resultar un poco complicada desde la perspectiva de la codificación:
Names Default to Here( 1 );
show (dt);
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> require the user to select two variables before clicking OK
Text Box( " Select test values. " ),
H List Box(
Text Box( "Select Variable " ),
x = Col List Box(
Data Table (dtxt), // data table reference > UPDATED the call to selected data table
all, // display all columns from the data table
xvar = (x << Get Selected)[1];
// get the name of the selected column before the window closes
Show( xvar );
),
Text Box( "Select ID" ),
y = Col List Box(
Data Table (dtxt), //> UPDATED the call to selected data table
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
Data Table (dtxt) << Graph Builder( // Added specific call to the seleted data table
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 1 ),
Variables( X( as column (xvar) ), Y( As Column (yvar) ) ),
Elements( Points( X, Y, Legend( 6 ) ) )
);</MODAL>Re: Seleccionar tabla y luego columnasLas ventanas modales tienen algunas acciones predeterminadas con los botones Aceptar y Cancelar, que pueden estropear el código que crees que está sucediendo.Me parece mejor adoptar las acciones predeterminadas y hacer ajustes simples a mi código para obtener lo que quiero.Aquí está mi modificación a la parte de selección de tabla de su código para obtener la tabla de datos seleccionada configurada como la tabla de datos actual y también para tener la variable "dt" configurada como puntero a la tabla de datos.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>
@Thierry_S La sugerencia de utilizar una lista para resolver el problema es buena.Sin embargo, lo hago un poco diferente.Guardo la referencia completa a la tabla de datos en la lista, no solo el nombre.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, data table(DataTable(t) << getName));
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>Re: Seleccionar tabla y luego columnasMuchas gracias, pero no soluciona mi problema. De hecho, tenía un script como este antes y comencé a complicar las cosas porque no puedo lograr que mi Col List Box actualice la lista de columnas de la tabla de datos seleccionada. ¿Quizás mi problema esté en esa parte del código?Re: Seleccionar tabla y luego columnasHola,
Parece que has complicado las cosas al crear un subíndice para asignar la salida de dtlb a dt.
Me pregunto si la siguiente variación funcionaría mejor para usted (ya no es necesario tener el "OKScript"
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>