Cerrar todas las tablas de datos excepto una lista de nombres de variablesHoy estoy intentando cerrar todas las tablas de datos, excepto un número selecto, ya que se ejecuta un procedimiento repetido utilizando variables de nombre de tabla de datos.Tengo tres mesas.Uno donde se recopilan los resultados, otro donde se recopilan los resultados no válidos de la primera tabla y uno que el usuario abre para que el script sepa qué valores de ID usar para comparar.Encontré una discusión donde se pueden cerrar tablas (se incluyó en mi script aquí), pero usa texto citado en una lista para los nombres de las tablas.Dado que mis usuarios elegirán una tabla de datos diferente para cada iteración de la tercera tabla, ¿cómo puedo usar una variable de nombre de tabla de datos para incluirla en la lista y dejarla abierta al final del procesamiento?
DontClose = {CompareTable, CollectionTable, IDTable}; // Example names of tables you want to leave open
//CompareTable = "Validation Table"
//Collection Table = "Unmatched Values"
//IDTable = could be anything but I want to leave this open once the processing loop is completed
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
print( Data Table(i) << Get Name ) ;
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);Re: Cerrar todas las tablas de datos excepto una lista de nombres de variablesEso podría funcionar, pero está cerca de generar una declaración Close() para cada tabla una vez completado su uso. Estaba intentando usar algo un poco más elegante que use menos líneas. La otra opción similar que he probado es poner todos los nombres de las tablas en una lista y tener una Lista de mantenimiento para comparar, el problema es que una de las tres tablas que debe permanecer abierta es seleccionada por el usuario, por lo que cambia de un uso a otro. Esta es la única razón por la que uso nombres de tablas de alias. Eso y tan pronto como comparta esto con alguien, cambiarán el nombre de la tabla donde reside el script, por lo que preferiría no codificar nombres de tablas de datos donde no sea necesario. ¡Es todo un rompecabezas! ¡Gracias por su respuesta!Re: Cerrar todas las tablas de datos excepto una lista de nombres de variablesNo puedo publicar el guión completo. Accede a servidores propietarios y me llevaría mucho tiempo crear una versión anónima. Pero me has hecho pensar que no estaba teniendo en cuenta eso y por eso se está quedando colgado. ¡Probaré mi teoría e informaré!
¡GRACIAS!Re: Cerrar todas las tablas de datos excepto una lista de nombres de variablesDado que usted genera todas las tablas de datos para destruirlas, ¿por qué no insertar cada referencia de tabla en una lista a medida que se crea? Luego puede iterar sobre la lista cuando llegue el momento de cerrarlas.
Re: Cerrar todas las tablas de datos excepto una lista de nombres de variables¿Puedes publicar tu guión?
Al cerrar tablas que tienen tablas de resumen vinculadas, se cerrará automáticamente la tabla de resumen.
Re: Cerrar todas las tablas de datos excepto una lista de nombres de variables¡Oh mi! Hablé demasiado pronto. Probé abriendo y cerrando tablas usando este script.
Lo que hace mi script es abrir dos tablas que debe dejar abiertas para la ejecución completa del script. Uno es el objetivo de las comparaciones que no son iguales y el otro alberga una lista de ID (que selecciona un usuario). Luego extrae datos de los servidores, ejecuta una gran cantidad de resúmenes, transposiciones y otras manipulaciones de datos, copia los resultados en la tabla donde reside el script y las diferencias en la tabla de destino (ambas deben dejarse abiertas), luego cierra todo el resumen. tablas y tablas generadas desde los servidores antes de pasar al siguiente ID.
Sigo recibiendo un error como este:
No se puede ubicar la tabla de datos{28} en el acceso o evaluación de 'Tabla de datos', Tabla de datos/*###*/(i)
¿Porque se está perdiendo el número de la mesa?Re: Cerrar todas las tablas de datos excepto una lista de nombres de variables@Wendy_Murphrey ¡Éste es el billete!Funciona tal como lo necesito.Dado que este script puede abrir o producir cientos de tablas, es perfecto para mis necesidades.
¡Gracias, gracias, gracias!¡Aprendo algo nuevo todos los días en JSL!
Re: Cerrar todas las tablas de datos excepto una lista de nombres de variables@guillaumebugnon Veo que TODAS las tablas necesitarían ese conjunto de variables.El guión que estoy escribiendo se abre y genera una multitud de tablas, por lo que esto agregaría un paso que creo que es mejor dejar para propósitos menos intensos.En última instancia, lo que deseo hacer es tener una lista de ID (podría ser más de 200) y hacer que el script ejecute un proceso para producir al menos 75 resúmenes para cada ID.Aunque esto funcionará, parece que la solución de Wendy Murphrey es la adecuada para mi aplicación.
¡Gracias por tomarse el tiempo para ayudarme con mi dilema!
Re: Cerrar todas las tablas de datos excepto una lista de nombres de variablesA continuación se muestra un enfoque que le permite utilizar las referencias de la tabla de datos:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt3 = Open( Pick File( "Select File", "$DOCUMENTS" ) );
dontClose = Eval List( {dt, dt2, dt3} );
Show( dontClose );
// 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 ) ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);
¡Espero que ayude!
Re: Cerrar todas las tablas de datos excepto una lista de nombres de variablesHola,
También puede configurar una variable de tabla en cada tabla de datos jmp:
dt << Set Table Variable("ToClose","N");Luego puedes hacer un bucle y verificar el valor:
For( i = N Table(), i > 0, i--,
vtoclose = Data Table(i) << Get Table Variable ("ToClose") ;
If ( Contains(vtoclose,"Y") >=1 ,
Close(Data Table(i),NoSave),
print("ToClose is not set to Y : do not close")
);
);