Escribí un script en el que si no existe una carpeta, se creará una carpeta. La ruta es a una carpeta de red compartida. Tengo acceso para modificar la carpeta compartida y el script funciona bien para mí. Sin embargo, cuando un colega que solo tiene acceso de lectura a la carpeta compartida, ejecuta el script, JMP se bloquea cuando llega a la siguiente sección de código. JMP simplemente cierra todo por completo, incluso el archivo de registro, por lo que no puedo ver si hay un error con él. Y funciona bien para mí.
¿Se pregunta por qué está sucediendo esto?
datestamper = Long Date( Today() );
timestamp = MDYHMS( Today() );
dtname = New Table( "UserName",
add rows( 1 ),
New Column( "Time", Character, "nominal", set each value( timestamp ) )
);
dtname:Time << set data type( Numeric ) << Format( ("ddmonyyyy h:m:s"), Input Format( "mm/dd/yyyy h:m:s" ) );
dtname:Time << set data type( Character );
dtname << New Column( "Folder", Character, nominal, formula( Substr( :Time, 3, 7 ) ) );
foldername = Char( :Folder );
path = ("S:\Lab\JMP\Results\Data\" || Char( foldername ) || "\");
If( !Directory Exists( path ),
Create Directory( path ),
Print( path || " already exists." );
Wait( 0 );
);
Usaría un script como este para reducir el problema:
// Create a log file on disk. Append each line to the end.
_LogFileName = "$desktop/JMP_log_file.txt";
// clear any old data and make sure the file exixts:
Save Text File( _LogFileName, Format( Today(), "h:m:s" ) || " starting\!n", Mode( "replace" ) );
addLog = Function( {txt},
Save Text File( _LogFileName, Format( Today(), "h:m:s" ) || " " || Char( txt ) || "\!n", Mode( "append" ) )
);
// example:
addlog( "begin loop" );
For( i = 1, i < 3, i += 1,
addlog( "looping " || Char( i ) )
);
addlog( "done" );
Open( _LogFileName, "script" ); // open in a script editorDespués del bloqueo, el archivo (en el escritorio en este ejemplo) mostrará la última llamada a addlog en la última línea del archivo. Después de un par de intentos, probablemente pueda reducir el problema a una sola declaración. Supongo que estará relacionado con la unidad de red; asegúrese de agregar los nombres de archivo y demás al archivo de registro. Utilice char () para convertir valores que no sean texto en texto.
JMP no debería fallar; incluso si encuentra una solución alternativa, sería genial informar el problema al soporte técnico, ¡gracias!
Edición 1: Sospecharía particularmente de que el mapa de la unidad S: no sea el mismo en ambas computadoras. Usando un UNC nombre podría ser una solución si ese es el problema (\\ servidor \ ruta \ archivo).
edición 2: Creo que también puede haber un problema con la columna de fórmula o la fila actual en la tabla. Algo como esto (no probado) podría ser mejor:
datestamper = Long Date( Today() );
timestamp = MDYHMS( Today() );
dtname = New Table( "UserName",
add rows( 1 ),
New Column( "Time", Character, "nominal", set each value( timestamp ) )
);
dtname:Time << set data type( Numeric ) << Format( ("ddmonyyyy h:m:s"), Input Format( "mm/dd/yyyy h:m:s" ) );
dtname:Time << set data type( Character );
dtname << New Column( "Folder", Character, nominal, formula( Substr( :Time, 3, 7 ) ) );
dtname << runFormulas; // force the formulas to run now
foldername = Char( dtname:Folder[1] ); // explicit table and row subscript
path = ("S:\Lab\JMP\Results\Data\" || Char( foldername ) || "\");Gracias Craig, estaba en lo correcto con la edición 1 (\\ servidor \ ruta \ archivo). Una vez que mapeé el servidor en lugar de s: funcionó perfectamente. un millón de gracias por tu ayuda 