Ho scritto uno script in cui se una cartella non esiste, verrà creata una cartella. Il percorso è verso una cartella di rete condivisa. Ho accesso in modifica alla cartella condivisa e lo script funziona bene per me. Tuttavia, quando un collega che ha solo accesso in lettura alla cartella condivisa, esegue lo script JMP si blocca quando arriva alla sezione di codice sottostante. JMP chiude completamente tutto, anche il file di registro, quindi non riesco a vedere se c'è un errore. E funziona bene per me.
Ti chiedi perché questo sta accadendo?
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 );
);
Userei uno script come questo per restringere il 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 editorDopo l'arresto anomalo, il file (sul desktop in questo esempio) mostrerà l'ultima chiamata ad addlog nell'ultima riga del file. Dopo un paio di tentativi, puoi probabilmente restringere il problema a una singola istruzione. Immagino che sarà correlato all'unità di rete; assicurati di aggiungere i nomi dei file e simili al file di registro. Usa char() per convertire i valori non di testo in testo.
JMP non dovrebbe andare in crash; anche se trovi una soluzione, sarebbe bello segnalare il problema al supporto tecnico, grazie!
modifica 1: sarei particolarmente sospettoso che la mappa dell'unità S: non fosse la stessa su entrambi i computer. Usare un UNC name potrebbe essere una soluzione se questo è il problema (\\server\percorso\file).
modifica 2: penso che potrebbe esserci un problema con la colonna della formula o anche con la riga corrente nella tabella. Qualcosa del genere (non testato) potrebbe essere migliore:
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 ) || "\");Grazie Craig, avevi ragione con la modifica 1 (\\server\percorso\file). Una volta ho mappato il server anziché s: ha funzionato perfettamente. grazie Mille per il tuo aiuto 