ファイルの保存が失敗した場合にスクリプトを中止してエラー メッセージを表示するにはどうすればよいですか?やあ、
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());ありがとう、
シャイラ
Re: ファイルの保存に失敗した場合にスクリプトを中止してエラー メッセージを表示するにはどうすればよいですか?@ian_jmp 、 ありがとう! これについて調べてみます。
@msharpはい、将来的にはその方向になると思いますが、ロジスティクスや事務処理などが必要になります。そのため、今のところ、私は短期的な解決策としてスクリプト ソリューションに注目しています。
Re: ファイルの保存に失敗した場合にスクリプトを中止してエラー メッセージを表示するにはどうすればよいですか?タイムスタンプ方式を使用することは良いアイデアですが、データ アーキテクチャを再考する方が良いかもしれません。現在の方法は、同じ CSV を複数の場所に保存するのが最適とは言えず、それらを上書きすることはデータを破棄するだけです。データベースのセットアップを検討することをお勧めします。
Re: ファイルの保存に失敗した場合にスクリプトを中止してエラー メッセージを表示するにはどうすればよいですか?タイムスタンプについては、こちらをご覧くださいここ「LastModificationDate()」で
Re: ファイルの保存に失敗した場合にスクリプトを中止してエラー メッセージを表示するにはどうすればよいですか?やあ@msharp 、
ご意見ありがとうございます。 残念ながら、IPアドレスの入力が多いため、ファイルチェック方法は実行できません。
ファイルはすでにそこにあり、私が知る必要があるのは、ファイルが更新されたかどうかです(タイムスタンプをチェックすることで確認できます)。 あなたが言ったように「.csv」をチェックするのが最善ですが、他に何がこの「サイレントエラー」を引き起こす可能性があるかわからないので、本当にポークヨークが必要です。
これを現在のスクリプトに追加すると思います。
1. すでに記述されているコードを実行しますが、for ループ内にコード行を追加して、保存前後のファイルのタイムスタンプを取得します。
2. 前後のタイムスタンプが等しい場合、エラーのフラグを立てます。
タイムスタンプを取得する方法はまだわかりませんが、次のことから始めます。 https://community.jmp.com/t5/Discussions/How-to-make-JSL-get-file-timestamp/td-p/3764
再度、感謝します。
Re: ファイルの保存に失敗した場合にスクリプトを中止してエラー メッセージを表示するにはどうすればよいですか?保存して、ファイルが存在するかどうかを確認してください。そうでない場合は保存されません:
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 を入れるのを忘れた場合は、ユーザーがこれを忘れているかどうかを確認し、修正する方が合理的です。ただし、ネットワークまたは接続に問題がある場合は、このエラーが発生する可能性があります。