Il mio script della funzione JSL di seguito estrae un file da una cartella di rete e lo emette in un file di dati per l'uso altrove. Come si genera il messaggio di errore "Questo file limite non esiste! Verifica nome file" insieme al file di dati. Sono su JMP13.
Names Default To Here( 1 );
getLimitsFile = Function({LimFileName}, {dtspk},
dtspk = Try(
Open(
"\\gbshyt-ppor-334e\DBX\XPD\System\Limits\"||LimFileName||".txt",
columns(
New Column( "ParameterName", Character, "Nominal" ),
New Column( "ColumnLSL", Character, "Nominal" ),
New Column( "ColumnUSL", Character, "Nominal" ),
New Column( "ColumnUnits", Character, "Nominal" ),
New Column( "ColumnSymb", Character, "Nominal" ),
New Column( "ColumnComm", Character, "Nominal" )
),
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Tab, Comma, CSV( 1 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 1 ),
Data Starts( 2 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
//,invisible)
),"This limit file does not exist! Check file name");
return(dtspk);
);Inoltre, in caso di errore, come interrompere l'ulteriore esecuzione del codice in cui viene utilizzata la funzione e mostrare all'utente una finestra di dialogo con il messaggio di errore?
Se JMP13 fornisce la funzione File Exists(), è possibile utilizzarla con l'istruzione if. Quindi è una decisione su cosa restituire / come interrompere il programma. Puoi usare ad esempio Throw() o Stop()
Names Default To Here(1);
getLimitsFile = Function({LimFileName}, {dtspk},
If(!File Exists("\\gbshyt-ppor-334e\DBX\XPD\System\Limits\"||LimFileName||".txt"),
Throw("This limit file does not exist! Check file name");
//or use return and throw outside function
);
//Open...
return(dtspk);
);
getLimitsFile("");
Show("continue...");
Modificare:
Quale datatable vorresti restituire con l'errore? Se non riesci ad aprire il file, non c'è nessun datatable da restituire a meno che tu non ne crei uno vuoto.
Grazie @jthi , Sì, JMP 13 ha File esiste (). Lo proverò.
Non ho formulato correttamente la mia domanda in precedenza. Quando il file non esiste, voglio solo che la funzione emetta l'errore in una finestra di dialogo e interrompa l'ulteriore esecuzione.
Quando il file esiste, voglio solo la tabella dati e l'output del messaggio. Come raggiungere questo obiettivo?
Hai una finestra di dialogo al di fuori della funzione che vuoi riempire con il messaggio di errore? E con datatable vuoi restituire l'output del messaggio con il datatable?