Wie kann ich ein Skript abbrechen und eine Fehlermeldung anzeigen, wenn das Speichern der Datei fehlschlägt?Hallo,
Ich habe ein Skript erstellt, das JMP in eine CSV-Datei konvertiert und diese unter Verwendung ihrer IP-Adresse auf Netzwerk-PCs speichert.
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 || ")" ) );Nun ist uns aufgefallen, dass, wenn wir vergessen, .csv in den Speicherbefehl einzugeben, das Skript trotzdem bis zu den nächsten Zeilen ausgeführt wird und in der Überschrift anzeigt, dass das Speichern erfolgreich war, auch wenn dies nicht der Fall ist.
Wir können nur feststellen, dass dies nicht erfolgreich war, indem wir die Datei im Netzwerk-PC und in der JMP-Protokolldatei überprüfen, die diesen Fehler aufweist:
Unable to save file. Unknown data target.
Meine Frage ist diese. Wenn dieser Fehler auftritt, wie stoppen wir das Skript und zeigen eine Fehlermeldung an? Diese Art von „stillem“ Fehler kann für den Benutzer irreführend sein.
Ich habe versucht, Try and Throw zu verwenden, aber es hat nicht funktioniert.
Try(dt << save( "\\" || IP_add[i] || "\c$\filedir\file.csv" );, Caption("Error! Check log."); Throw());Danke,
Shaira
Betreff: Wie kann ich ein Skript abbrechen und eine Fehlermeldung anzeigen, wenn das Speichern der Datei fehlschlägt?@ian_jmp , Danke! Ich werde mir das ansehen.
@msharp Ja, ich denke, dass dies in Zukunft die Richtung sein wird, auch wenn dafür einiges an Logistik, Papierkram usw. erforderlich ist. Daher betrachte ich die Skriptlösung vorerst als kurzfristige Lösung.
Betreff: Wie kann ich ein Skript abbrechen und eine Fehlermeldung anzeigen, wenn das Speichern der Datei fehlschlägt?Die Verwendung der Zeitstempelmethode ist zwar eine gute Idee, eine bessere Idee könnte jedoch darin bestehen, Ihre Datenarchitektur zu überdenken.Ihre aktuelle Methode ist nicht optimal, wenn Sie dieselbe CSV-Datei an mehreren Speicherorten speichern und diese überschreiben, werden nur Daten verschwendet.Ich würde empfehlen, die Einrichtung einer Datenbank in Betracht zu ziehen.
Betreff: Wie kann ich ein Skript abbrechen und eine Fehlermeldung anzeigen, wenn das Speichern der Datei fehlschlägt?Werfen Sie einen Blick auf die Zeitstempel Hier bei 'LastModificationDate()'
Betreff: Wie kann ich ein Skript abbrechen und eine Fehlermeldung anzeigen, wenn das Speichern der Datei fehlschlägt?Hallo @msharp ,
Danke für die Eingabe. Leider kann ich die Dateiprüfungsmethode nicht durchführen, da ich viele IP-Adressen eingegeben habe.
Die Datei ist bereits vorhanden und ich muss wissen, ob die Datei aktualisiert wurde (kann durch Überprüfen des Zeitstempels erfolgen). Überprüfen Sie am besten die „.csv“-Datei, wie Sie erwähnt haben, aber ich möchte wirklich ein Poke-Yoke, da ich nicht weiß, was diese „stillen Fehler“ sonst noch auslösen kann.
Ich denke, ich werde dies zum aktuellen Skript hinzufügen:
1. Führen Sie die bereits geschriebenen Codes aus, fügen Sie jedoch in der for-Schleife Codezeilen hinzu, um den Zeitstempel der Datei vor und nach dem Speichern zu erhalten.
2. Markieren Sie einen Fehler, wenn der Zeitstempel vor und nach dem Zeitpunkt gleich ist.
Ich weiß noch nicht, wie ich einen Zeitstempel bekomme, aber ich fange damit an: https://community.jmp.com/t5/Discussions/How-to-make-JSL-get-file-timestamp/td-p/3764
Danke noch einmal.
Betreff: Wie kann ich ein Skript abbrechen und eine Fehlermeldung anzeigen, wenn das Speichern der Datei fehlschlägt?Speichern Sie es einfach und prüfen Sie dann, ob die Datei vorhanden ist.Wenn nicht, wurde nicht gespeichert:
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 || ")" ) );
Wenn das Problem nur auftritt, wenn „ Wenn wir vergessen, .csv in den Speicherbefehl einzugeben, wäre es sinnvoller, einfach zu überprüfen, ob der Benutzer dies vergessen hat, und es für ihn zu korrigieren.Allerdings kann dieser Fehler auftreten, wenn Netzwerk- oder Verbindungsprobleme vorliegen.