¿Cómo hacer que JMP abra un archivo en modo de solo lectura?Estimados,
Utilizo un método para actualizar complementos como se describe en https://community.jmp.com/t5/JMP-Scripts/How-to-write-self-updating-JMP-add-ins/ta-p/21932/jump-to/first-unread-message por @Jeff_Perkinson . Hay un archivo "metadata.jmp" que debe abrirse cuando se inicia JMP. Experimenté algunos problemas con la apertura automática de este archivo por parte de muchos usuarios, porque en algunas circunstancias un usuario puede mantener ese archivo abierto durante mucho tiempo (sin saberlo), y luego no puedo actualizar estos archivos.
También en otros casos (grandes tablas de datos compartidas por muchos usuarios) puede ser bueno abrir archivos en modo de solo lectura.
¿Existe la posibilidad de hacer que JMP abra una tabla de datos, etc. en modo de solo lectura?
Automatización y secuencias de comandosFusión y limpieza de datosRe: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?Gracias a todos por tantas propuestas, las probaré y encontraré una buena solución.
Re: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?@georg
Algunas suposiciones sobre su aplicación.
1. varias personas no escriben en los metadatos simultáneamente
2. es una llamada de solo lectura a "¿hay una nueva versión de una de mis aplicaciones?¿Dónde está?"
Si ambos son ciertos, normalmente usaría una base de datos SQLite y le haría llamadas ODBC.No diría que tiene que haber muchas campanas y silbatos si todo lo que estás haciendo es recuperar metadatos.Además, también podría hacer cosas como almacenar el complemento en la base de datos.Las mesas JMP son excelentes para muchas cosas.Pero para esta aplicación específica, diría que es una exageración.Si es solo una llamada descartable que vas a cerrar en cuanto veas si hay una nueva versión,....
Todavía puedes escribirlo fácilmente.Nuevamente, esto no funcionaría bien si varios usuarios están escribiendo al mismo tiempo. Lo importante es que cuando JMP abre un CSV, no bloquea el archivo original como lo hace con una tabla JMP.
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
csv_path = convert file path("$DESKTOP\Big Class.csv");
dt << Save As(csv_path);
close(dt, no save);
dt_csv = open(csv_path);
dt_csv << Add Rows({:name = "Fake", :age = 14, :sex = "F", :height = 14, :weight = 28});
dt_csv:age[1] = 0;
// I can still delete this file even though I have the table open
show(delete file(csv_path));
dt_csv << Save As(csv_path);
En general, prescindiría de la funcionalidad de la tabla JMP en lugar de lidiar con múltiples niveles de permisos.Porque si abre un csv en un script JMP, abre una tabla JMP que no está vinculada
Re: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?Guardar en disco como oculto o de solo lectura tiene un fragmento RunProgram para ejecutar el comando attrib de DOS. Puede marcar el archivo como de solo lectura o borrar la marca.
Re: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?Una sugerencia: la Administrador de complementos eso @Justin_Chilton creado automatiza el método que @Jeff_Perkinson descrito.El complemento actualiza un archivo .jsl que contiene una matriz asociativa que los usuarios leen.
Re: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?@vince_faller gracias, en mi caso se prefiere una tabla jmp, tengo una tabla pequeña que necesito editar (por JMP).
En otro caso, cuando tendría tablas grandes, que son utilizadas por muchos usuarios, también sería mejor una tabla jmp, porque no se necesita conversión, ¿no?
Además, la tabla jmp tiene más funciones (scripts, tipos de datos...), por lo que siempre preferiría la tabla jmp como tipo de archivo.
Re: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?¿Podría simplemente hacer que su tabla JMP sea un csv?
Re: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?@ih gracias por sus ideas, intentaré encontrar una buena solución de trabajo con él.
Establecer permisos en el sistema de archivos es una solución directa que preferiría, pero al mirarlo en detalle (los archivos están en el servidor de archivos), encontré muchos usuarios para establecer los Derechos, por lo que resultó ser complejo. Porque tenemos unos cientos de usuarios usando los archivos, y no sé bajo qué usuarios actúan.
Solo tengo otra idea:
- para copiar el archivo a $TEMP y luego abrirlo
Re: ¿Cómo hacer que JMP abra un archivo en modo de solo lectura?No estoy seguro de cómo abrir un archivo como de solo lectura (si alguien sabe, por favor comente), pero aquí hay algunas ideas que pueden ayudarlo a solucionar su problema:
- Cambie los permisos de archivo para que la mayoría de los usuarios tengan acceso de solo lectura a ese archivo.
- Haga que la sección de código que necesita abrir el archivo sea corta y simple, y envuélvala en un bloque de prueba.Después del bloque try que maneja las operaciones del archivo, o en la sección catchExpr, incluya el código para cerrar el archivo.Por ejemplo:
try(
//Work with the file here
dt = Open("a file");
values = dt:Column << get values;
dt << Close;
, //This is the catchExpr, it is executed on an error.
//Make sure the file is closed, but don't throw another if it wasn't open.
try( dt << Close );
//Now raise an error.
throw( "Error working with metadata file: " || char( Exception_msg ) );
);
//Or you could close the file in a subsequent try function
try(
//Work with the file here
dt = Open("a file");
values = dt:Column << get values;
);
try( dt << Close );
//Now do any time consuming functions on the data extracted from that file
//show(values);