如果保存文件失敗,如何中止腳本並顯示錯誤消息?你好,
我製作了一個腳本,將 JMP 轉換為 csv 文件並使用其 IP 地址將其保存到網絡 PC。
dt = Current Data Table();
ToolID = {"G01", "G02", "G03", "G04"};
IP_add = {"10.87.123.456", "10.87.123.789", "10.87.456.789", "10.87.789.123"};
current_pref = Char( Arg( Parse( Char( Get Preferences( Export settings ) ) ), 1 ) );
Pref( Export Settings( End Of Field( Comma ), Export Table Headers( 1 ) ) );
captxt = "";
For( i = 1, i <= N Items( IP_add ), i++,
dt << save( "\\" || IP_add[i] || "\c$\filedir\file.csv" );
Caption( "Updated " || Tester[i] || " \\" || IP_add[i] );
captxt = captxt || "
Updated " || ToolID[i] || " \\" || IP_add[i];
Wait( 0.2 );
);
Caption( captxt );
Eval( Parse( "pref(" || current_pref || ")" ) );現在,我們注意到,如果我們忘記將 .csv 放在保存命令中,腳本仍會執行到下一行,並顯示保存成功的標題,即使沒有。
我們可以知道它不成功的唯一方法是檢查網絡 PC 和 JMP 日誌文件中的文件是否有此錯誤:
Unable to save file. Unknown data target.
我的問題是這樣的。 如果發生此錯誤,我們如何停止腳本並顯示錯誤消息? 這種“無聲”錯誤可能會誤導用戶。
我嘗試使用 Try and Throw,但沒有用。
Try(dt << save( "\\" || IP_add[i] || "\c$\filedir\file.csv" );, Caption("Error! Check log."); Throw());謝謝,
夏伊拉
回复:如果保存文件失敗,如何中止腳本並顯示錯誤消息?@ian_jmp , 謝謝! 我會調查的。
@msharp ,是的,我認為這是未來的方向,儘管它需要一些物流、文書工作等。所以現在,我將腳本解決方案視為短期解決方案。
回复:如果保存文件失敗,如何中止腳本並顯示錯誤消息?雖然使用時間戳方法是一個好主意,但更好的主意可能是重新考慮您的數據架構。您當前的方法不是最佳方法,將相同的 csv 保存到多個位置並覆蓋它們只是丟棄數據。我建議考慮建立一個數據庫。
回复:如果保存文件失敗,如何中止腳本並顯示錯誤消息?關於時間戳,看看這裡在 'LastModificationDate()'
回复:如果保存文件失敗,如何中止腳本並顯示錯誤消息?你好@msharp ,
感謝您的輸入。 不幸的是,我無法使用文件檢查方法,因為我輸入了很多 IP 地址。
文件已經存在,我需要知道文件是否已更新(可以通過檢查時間戳來完成)。 最好像你提到的那樣檢查“.csv”,但我真的想要一個 poke-yoke,因為我不知道還有什麼可以觸發這個“無聲錯誤”。
我想我會將其添加到當前腳本中:
1.運行已經寫好的代碼,但是在for循環中,添加代碼行獲取文件保存前後的時間戳。
2. 如果時間戳之前和之後相等,則標記錯誤。
我還不知道如何獲取時間戳,但我將從這裡開始: https://community.jmp.com/t5/Discussions/How-to-make-JSL-get-file-timestamp/td-p/3764
再次感謝。
回复:如果保存文件失敗,如何中止腳本並顯示錯誤消息?只需保存它,然後檢查文件是否存在。如果沒有,則不會保存:
dt = Current Data Table();
ToolID = {"G01", "G02", "G03", "G04"};
IP_add = {"10.87.123.456", "10.87.123.789", "10.87.456.789", "10.87.789.123"};
current_pref = Char( Arg( Parse( Char( Get Preferences( Export settings ) ) ), 1 ) );
Pref( Export Settings( End Of Field( Comma ), Export Table Headers( 1 ) ) );
captxt = "";
For( i = 1, i <= N Items( IP_add ), i++,
location = "\\" || IP_add[i] || "\c$\filedir\file.csv";
dt << save( location );
//Should work, may not depending on your network settings
If( !File Exists( location ), Caption("Error! Failed to save to location: " || location); Throw());
//Could also try opening it, which will throw an error if it doesn't exist
Try(dttemp = Open(location); Close(dttemp, nosave), Caption("Error: " || exception_msg); Throw());
Caption( "Updated " || Tester[i] || " \\" || IP_add[i] );
captxt = captxt || "
Updated " || ToolID[i] || " \\" || IP_add[i];
Wait( 0.2 );
);
Caption( captxt );
Eval( Parse( "pref(" || current_pref || ")" ) );
如果問題只發生在“如果我們忘記將 .csv 放在保存命令中”,那麼檢查用戶是否忘記了它並為他們更正它會更有意義。也就是說,如果存在網絡或連接問題,您可能需要此錯誤。