Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?Usando una secuencia de comandos, necesito construir un archivo de diario completamente autónomo con cuadros de botones que reproduzcan tablas de datos.En la aplicación de producción, habrá muchos encabezados (cada uno representando una parte), y cada encabezado tendrá varios cuadros de botones debajo, cada uno mostrando una tabla de datos diferente asociada con la parte.Debido a los cálculos complejos que intervienen en la construcción de las tablas de datos, las construyo usando funciones.Mi intención sería distribuir SOLAMENTE el archivo del diario a los usuarios.
He construido un ejemplo esquelético usando la tabla de datos de muestra Baltic.jmp. La función "SmallTables()" devuelve el script de la tabla como texto.Pero no puedo encontrar una manera de ingresar ese texto en los cuadros de script para los cuadros de botón en el archivo de diario. Cualquier ayuda sería muy apreciada.
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ) );
Close( dt, NoSave );
tblScript = dt_Small << Get Script;
result = Char( Name Expr( tblScript ) );
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( SmallTables( k ) ) ) )
);Re: Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?¡Muchas gracias por la referencia a ese artículo!Es una explicación muy clara con buenos ejemplos.Es de mucha ayuda.
Re: Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?El truco es asegurarse de que la subexpresión se inserte antes de evaluarla.Este artículo de JSL Cookbook podría ayudar:
Inserte una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute
Re: Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?¡Qué buen ejemplo!En mi proyecto, sin embargo, necesito construir cientos de tablas de datos, varias para cada una de las muchas partes.Es por eso que estoy usando funciones para construir las tablas de datos (espero que ningún usuario principiante vea que ¡guion!). Me temo que su sugerencia provocaría que se abrieran demasiadas ventanas a la vez. Pero, para un número manejable de tablas de datos, ¡su concepto es muy bueno!Estoy seguro de que tendré ocasión de usarlo.
Muchas gracias por tu ayuda.
Re: Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?¡Muchas gracias!Eso funciona perfectamente en mi guión "grande".Estaba obsesionado con la idea de que el resultado de mi función era una representación de texto de la secuencia de comandos y, como tal, debería ingresarse en el cuadro de diálogo de la secuencia de comandos. Todavía no tengo claro por qué eso no funciona, pero usar la función Name Expr y Substitute, como demostraste, funciona perfectamente.
Por cierto, en mi aplicación de la vida real, se requiere el ciclo porque necesito construir diferentes tablas.Tengo una gran cantidad de partes y el script crea varias tablas de datos, con scripts, que son exclusivos para cada parte.Esa secuencia de comandos tarda un poco en ejecutarse, por lo que es genial poder ejecutar esa secuencia de comandos para crear un archivo de diario independiente.
¡Gracias de nuevo por ponerme en el camino correcto!
Re: Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?Utilizo archivos de diario independientes para demostraciones y capacitación, lo que los hace fáciles de compartir.Los enlaces para cerrar secciones individuales y para limpiar todo mantienen las cosas en movimiento.La siguiente secuencia de comandos crea un diario de ejemplo básico; una vez que lo ejecute, debería ver un diario con enlaces.Haga clic con el botón derecho en cada uno y seleccione Editar > Editar guión para ver cómo se construyen.Uso 'Copiar script de tabla' a menudo para completarlos.Poner estos códigos en las funciones es una buena idea, pero tenga en cuenta que se parece más a la magia negra para los usuarios principiantes que intentan explorar su diario.

Tenga en cuenta que normalmente hago diarios de forma interactiva, sin usar un script como este.
names default to here(1);
//Open data tables temporarily so we can copy their scripts
dtIrisTemp = open("$Sample_Data/Iris.jmp");
dtBigClassTemp = open("$Sample_Data/Big Class.jmp");
//Use Eval(EvalExpr()) so the actual scripts for the data table are saved in
//the journal.
Eval( Eval Expr(
journal = New Window( "A Journal", <<JOURNAL></JOURNAL>
Re: Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?Si va a usar una tabla, no la abriría ni la cerraría para cada llamada de función. Abriría la tabla, construiría la ventana, con el bucle for y luego cerraría la tabla.
Prueba esto.
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ), Invisible );
Close( dt, NoSave );
_xx = dt_Small << Get Table Script Names;
dt_Small << Delete Scripts(_xx);
tblScript = dt_Small << Get Script;
wait(0);
Close( dt_Small , NoSave);
NameExpr(tblScript)
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
_xx = SmallTables(k);
Eval(Substitute(Expr(jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( _scr ) ) )),
Expr(_scr), NameExpr(_xx) ) )
);Re: Usando un script, ¿cómo configuro el texto de un script de tabla en un cuadro de botón en un archivo de diario?