cerrar todas las tablas de datos pero dejar una abierta para un análisis posteriorHola a todos
Este es un seguimiento de la publicación:
https://community.jmp.com/t5/Discussions/JSL-How-to-close-data-tables-after-analysis/mp/36739
Sin embargo, encontré un error en mi script mientras ejecutaba JSL Debgger.
DontClose = ("dt4"); // Example names of tables you want to leave
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i >= 0, i--,
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);La secuencia de comandos funciona bien ya que cierra todas las tablas excepto dt4, pero aparece un error como se muestra en el archivo adjunto en la instrucción If. ¿Alguien tiene idea de a qué se refiere esto?
La secuencia de comandos funciona bien y cierra todas las tablas excepto dt4; sin embargo, tengo problemas al extender la secuencia de comandos después de este punto. Tengo una secuencia de comandos de creación de gráficos que se iniciará después de este punto para la tabla dt4, pero no hace nada. Entonces, me pregunto si este error aquí está deteniendo el script para continuar con los siguientes pasos.
Re: cerrar todas las tablas de datos pero dejar una abierta para un análisis posteriores porque eres >= 0.No hay tabla de datos 0
ya sea que sea >= 1 o >0
DontClose = ("dt4"); // Example names of tables you want to leave
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i >= 1, i--,
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);Re: cerrar todas las tablas de datos pero dejar una abierta para un análisis posteriorGracias por el consejo. Cambié el enfoque y ahora cierro las tablas de datos antes en el script. El script es realmente más rápido ahora. Gracias
Re: cerrar todas las tablas de datos pero dejar una abierta para un análisis posteriorPhil, estaba pensando lo mismo.Es importante tener en cuenta que los nombres de las tablas no se pueden duplicar, por lo que si intenta crear una nueva tabla con el nombre "dt4" y ya existe una tabla "dt4", JMP la llamará "dt4 2".Es probable que los nombres de las tablas no sean lo que espera, lo cual es otra razón por la que creo que el código anterior es una forma deficiente de resolver el problema en cuestión.
Acabo de mirar la publicación vinculada en la publicación original.El código de Uday está mucho más listo para la producción.Desafortunadamente, el OP está usando la simplificación de txnelson, que es solo una simplificación y es donde tiene todos sus problemas.
Re: cerrar todas las tablas de datos pero dejar una abierta para un análisis posterior¿Es "dt4" el nombre real de su tabla?¿Suena más probable que sea el nombre de la variable que ha definido para la tabla en su secuencia de comandos? Creo que su secuencia de comandos está buscando el nombre de la tabla, es decir, lo que ve en la parte superior de la tabla JMP, por ejemplo, "Big Class":
Este es un ejemplo simple (del índice de secuencias de comandos) de la función Obtener nombre() que se utiliza en su secuencia de comandos:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
n = dt << Get Name();
Show( n );
Por cierto, ¡podría estar equivocado acerca de que esta es la causa de tu problema!
Re: cerrar todas las tablas de datos pero dejar una abierta para un análisis posteriorSus tablas podrían ser tablas vinculadas. Vea el siguiente ejemplo.Eso o hay un error con su secuencia de comandos y hace referencia a la tabla incorrecta por accidente.Esto es probable ya que está buscando tablas por nombre.
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = dt1 << Summary(
Group( :height ),
Freq( "None" ),
Weight( "None" )
);
close(dt1, "nosave"); //closes both dt1 and dt2 since dt2 is dependant on dt1
De cualquier manera, el código anterior es una forma deficiente de manejar el cierre de tablas.Primero, cerrará las tablas que no están relacionadas con su secuencia de comandos, lo que podría enojar a los usuarios porque cerró las otras cosas en las que estaban trabajando.En segundo lugar, dejar tablas que no necesita hasta el final para cerrar es un uso ineficiente de la memoria.Sería una mejor práctica/patrón cerrar las tablas justo después de su uso en lugar de esperar hasta el final del script.Si las tablas son necesarias para todo el script, recomendaría realizar un seguimiento de las tablas en una lista para que solo cierre las relacionadas con su script.
Re: cerrar todas las tablas de datos pero dejar una abierta para un análisis posteriorHola Uday,
Cambié esto pero sigo teniendo el mismo error en JSL Debugger.
Re: cerrar todas las tablas de datos pero dejar una abierta para un análisis posterior@ivomdb ,
El error que ve generalmente ocurre si se refiere a una tabla de datos que JMP no sabe que existe o no tiene una referencia para acceder a la tabla. Esto sucede principalmente cuando la referencia de la tabla de datos se pierde o se cierra antes de que se haga referencia a ella.
Una forma de abordar este problema es haciendo lo siguiente.
También debe intentar asegurarse de que la mesa no se cierre prematuramente.
DontClose = ("dt4"); // Example names of tables you want to leave
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i >= 0, i--,
Current Data Table(Data Table(i)); // This should make the data table you are working with active and current
If( Contains( DontClose, Data Table( i ) << get name ),
Continue();
,
// else
Close( Data Table( i ), "No Save" );
)
);<BR />