Wissen Sie, warum mein Skript vollständig ausgeführt wird, wenn ich es manuell ausführe, aber nicht funktioniert, wenn ich es über einen Befehl in der Symbolleiste ausführe?Hallo Leute,
Ich habe dieses Skript, das zu 100 % funktioniert, wenn ich es manuell ausführe.
Wenn ich es über die Symbolleiste ausführe (automatisch), wird der letzte Abschnitt nicht ausgeführt.
Haben Sie eine Vorstellung davon, warum das passiert?
Ich habe im Skript einen Kommentar zu dem Punkt hinzugefügt, der nicht mehr funktioniert:
//AB HIER LÄUFT DAS Skript NICHT IM TOOLBAR-MODUS
//Script for GRR Anlaysis for Qual Data
names = {};
//prueba={};
RepeatabilityData = {};
ReproducibilityData = {};
GaugeRRData = {};
ParttoPartData = {};
NDCData = {};
Datos_table = Current Data Table();
For( i = 1, i <= N Col(), i++,
Insert Into( names, Column Name( i ) )
);
dlg1 = Dialog(
Title( "GR&R" ),
"Select Tests",
vlist( selectiontests = List Box( names ) ),
"Select Channel Column",
vlist( selectionchannel = List Box( names ) ),
"Select Category (Pre/Post) Column",
vlist( selectioncategory = List Box( names ) ),
"select Devices Number Column",
vlist( selectionSN = List Box( names ) ),
synch = Check Box( "Generate Journal", 0 ),
hlist( button( "OK" ), button( "Cancel" ) )
)
;
if (dlg1["Button"]==1,
column(dlg1["selectionchannel"])<<SET modeling="" type="">0.4,
ListDelta[l]<<SET property=""></SET></SET>Automatisierung und SkripterstellungBetreff: Wissen Sie, warum mein Skript vollständig ausgeführt wird, wenn ich es manuell ausführe, aber nicht funktioniert, wenn ich es über einen Befehl in der Symbolleiste ausführe?Hallo @CrownofTears ,
Als ich diese Probleme in der Vergangenheit hatte, fand ich heraus, dass das Hinzufügen von Wait (0.1) vor der Schleife und am Ende jeder Schleife funktionierte. In Ihrem Fall habe ich keinen offensichtlichen Verdächtigen für das langsame Verhalten. Ich würde einfach nach jedem ein Wait (0.1) setzen; in der letzten Schleife und sehen Sie, ob es funktioniert
Dies löst das Problem, dass jmp manchmal mit dem nächsten Schritt fortfährt, ohne sicherzustellen, dass der vorherige beendet wurde.
Betreff: Wissen Sie, warum mein Skript vollständig ausgeführt wird, wenn ich es manuell ausführe, aber nicht funktioniert, wenn ich es über einen Befehl in der Symbolleiste ausführe?@CrownofTears – viel zu spät, nehme ich an, aber versuchen Sie es hinzuzufügen
TabData << RunFormulas;
anstelle des Kommentars. Die Spaltenformeln von JMP werden ausgeführt, wenn JMP inaktiv ist. Wenn Sie es also abschnittsweise ausführen, können die Formeln ausgewertet werden. Durch das Hinzufügen von Warteanweisungen haben die Formeln möglicherweise genügend Leerlaufzeit zum Abschließen, es ist jedoch unmöglich, die perfekte Wartezeit auszuwählen. <
Col Std Dev(As Column(ListDelta[l]))
findet es nicht heraus.
Betreff: Wissen Sie, warum mein Skript vollständig ausgeführt wird, wenn ich es manuell ausführe, aber nicht funktioniert, wenn ich es über einen Befehl in der Symbolleiste ausführe?Hallo @Craige_Hales , wir sollten das genau hinzufügen
TabData << RunFormulas;
Nach diesem Kommentar?
//STARTING FROM HERE THE SCRIPT DOES NOT RUN IN TOOLBAR MODE
Wenn ja, hat es bereits funktioniert und es hat nicht funktioniert 
Betreff: Wissen Sie, warum mein Skript vollständig ausgeführt wird, wenn ich es manuell ausführe, aber nicht funktioniert, wenn ich es über einen Befehl in der Symbolleiste ausführe?(Ja, das habe ich gemeint.)
Ich vermute.
Erhalten Sie Meldungen im Protokollfenster, wenn es fehlschlägt? Sie können print()-Anweisungen hinzufügen, um den Fehler einzugrenzen.
Meine nächste Vermutung ist, dass die aktuelle Datentabelle() nicht das tut, was Sie erwarten. Versuchen Sie, eine explizite Festlegung des Datentabellenbereichs zu verwenden, anstatt von CurrentDataTable abhängig zu sein.
Abhängig von der CurrentDataTable ist dies eine fragile Möglichkeit, Code zu erstellen
- es kann sich ändern, wenn eine andere Tabelle aktuell wird (was wahrscheinlich ist, wenn ein neues Fenster geöffnet wird).
- es kann in verschiedenen Kontexten unterschiedlich sein (was wahrscheinlich ist, wenn ein Symbolleistenkontext im Spiel ist)
Versuchen Sie es auch noch einmal: Deaktivieren Sie das Kontrollkästchen „Hier Namespace verwenden“ in der Symbolleiste, um zu sehen, ob es funktioniert. Das wird uns auch etwas sagen.