Problem bei der Skriptausführung<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hallo,
Hat jemand anderes dieses Problem festgestellt, bei dem ein Teil eines Skripts nicht ordnungsgemäß ausgeführt wird, wenn das gesamte Skript ausgeführt wird, wird es ordnungsgemäß ausgeführt, wenn es zeilenweise ausgeführt wird. Ich habe dies einige Male mit JMP 7 und 11 erlebt. Ich wollte nur klären, ob es sich um einen Syntaxfehler handelt oder vielleicht für mich Einstellungen oder Codelogik und nicht nur einen Fehler in JMP?
Das letzte Mal, als ich es bemerkte, war das Setzen von Spaltenformeln. Ich verkette Zeichen und mache dann die neue Spalte für andere Berechnungen numerisch. Spalten A und B sind Zeichen ohne Buchstaben. Wenn ich es Zeile für Zeile ausführe, wird es so ausgeführt, wie es sollte, jedoch werden die gesamten Skriptergebnisse in einer leeren Spalte ausgeführt.
Gedanken?
dt1 << add multiple columns( "Col C" after( "Col B"), character, nominal );
Column( "Col C)<<Formula( Concat(:Name( "Col A" ),:Name( "Col B" ) ));
Column( "Col C" )<< delete formula;
Column( "Col C" )<< Data Type( Numeric ) << Modeling Type( Continuous );
Ich habe dieses Problem auch bei Skripts festgestellt, die Zeilen basierend auf bestimmten Bedingungsanweisungen auswählen und filtern.
Re: SkriptausführungsproblemWurde das Skript ausgeführt, als Sie Wait () durch Run Formulas ersetzt haben?
Ich könnte die Panne reproduzieren, die Sie gefunden haben. Vielleicht würde dieser etwas andere Ansatz für Sie funktionieren?
In diesem Fall habe ich nicht "Mehrere Spalten hinzufügen" verwendet und die Spalte am Ende der Zeile nach vorne verschoben.
Namen standardmäßig hier (1);
dt = Neue Tabelle ();
dt << Neue Spalte ("A", Zeichen, Nominal, Einstellwerte ({"1", "2", "3"}));
dt << Neue Spalte ("B", Zeichen, Nennwert, Einstellwerte ({"4", "5", "6"}));
dt << New Column ("C", Zeichen, Nominal, Formel (: A ||:
);
: C << Formel löschen ();
: C << Datentyp (numerisch) << set Modeling Type (Continuous);
dt << Gehe zu (C);
dt << Ausgewählte Spalten verschieben ("nach vorn");
Re: SkriptausführungsproblemDanke für die schnellen Antworten, Jungs!
Leider habe ich diese Zeilen auch drin. Ich habe sie möglicherweise versehentlich gelöscht, während ich den Pseudocode verspottete.
Hier ist ein besserer Code-Auszug:
dt1 << add multiple columns( "Bioburden", 1, after( "Bioburden B"), character, nominal );
Column( "Bioburden")<
dt1 << Run Formulas;
Column( "Bioburden ")<< delete formula;
wait(1);
Column( "Bioburden )<< Data Type( Numeric ) << Modeling Type( Continuous );
dt1 << delete column( :Name( "Bioburden A" ) );
dt1 << delete column( :Name( "Bioburden B" ) );
Ich habe keine zweiten Laufformeln (), nachdem ich meine Formel in der vierten Zeile gelöscht habe. Ich habe es noch nie so benutzt.
Re: SkriptausführungsproblemDas Problem ist, dass die Spaltenformel nicht vollständig ausgewertet wird, bevor der nächste Schritt ausgeführt wird.
dt << Laufformeln (); stellt sicher, dass die Formeln ausgewertet werden, bevor der nächste Schritt ausgeführt wird. In meinen Händen funktioniert das viel besser als mit wait (1);
dt1 = aktuelle Datentabelle ();
dt1 << füge mehrere Spalten hinzu ("C", 1, nach (:
, Zeichen);
Spalte ("C") << Formel (Concat (: Name ("A") ;: Name ("B")));
dt1 << Laufformeln ();
Spalte ("C") << Formel löschen;
dt1 << Laufformeln ();
Spalte ("C") << Datentyp (numerisch) << Modellierungstyp (fortlaufend);
Re: SkriptausführungsproblemEine Spaltenformel wird asynchron berechnet. Das Skript wird also auch dann fortgesetzt, wenn die Auswertung noch nicht abgeschlossen ist. Um sicherzustellen, dass Ihr Skript nur nach Abschluss der Formelauswertung ausgeführt wird, können Sie die Meldung "Formeln ausführen" an die Datentabelle senden:
Säule ( "Col C ) << Formel ( Concat ( : Name ( "Cola" ) ,: Name ( "Col B" ) )) ;
dt << Formeln ausführen;