如果保存文件失败,如何中止脚本并显示错误消息?你好,
我制作了一个脚本,将 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 放在保存命令中”,那么检查用户是否忘记了它并为他们更正它会更有意义。也就是说,如果存在网络或连接问题,您可能需要此错误。