Ausführen eines JMP-Skripts ohne zugehörige TabelleIch habe ein JMP-Skript, das eine SQL-Abfrage startet und dann die resultierende Datentabelle verarbeitet.Anschließend führt es eine Reihe von Spaltenmanipulationen und anderen Tabellenoperationen durch.Wenn ich das Skript im JSL-Builder ausführe, wird im Feld neben der Schaltfläche „Abspielen“ immer noch eine Datentabelle aufgeführt.Auch wenn ich „NamesDefaultToHere(1)“ habe, werden dadurch häufig immer noch die Spalten in der Tabelle geändert, die im Feld des JSL-Fensters aufgeführt sind (sofern sie dieselben Spaltennamen haben) – und nicht die von der SQL-Abfrage generierte Tabelle.Gibt es eine Zeile zum Skript, die ich hinzufügen kann, um dieses Verhalten zu verhindern?Wenn zum Beispiel mit dem folgenden Skript die vorhandene Tabelle eine Spalte „DIEID“ hat, wird diese geändert und nicht die vom Skript erstellte SQL-Datentabelle.Wenn keine Tabellen geöffnet sind, funktioniert es ordnungsgemäß.
Vielen Dank und lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
dtIGNITE << show window(1);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));
Betreff: Ausführen eines JMP-Skripts ohne zugehörige TabelleZwischen meinem Tippfehler bei den bisherigen Daten und einigen meiner eigenen Verwirrung über Umfang/Variable – Ihre Lösung hat funktioniert.Unten finden Sie das endgültige Skript in der implementierten Form.
Vielen Dank für Ihre Hilfe!
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
Current Data Table (dtIGNITE);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));Betreff: Ausführen eines JMP-Skripts ohne zugehörige TabelleUm anzugeben, dass die dtIGNITE-Tabelle aktuell ist, würde die Syntax wie folgt aussehen:
Current Data Table( dtINGNITE );
Da die Baselines-EXT-Tabelle über gleichnamige Spalten verfügt, versuchen Sie, den optionalen Spaltenverweis zu Ihren Column()-Funktionen hinzuzufügen.Dadurch wird JMP mitgeteilt, in welcher Tabelle nach den Spalten DIEID und FCID gesucht werden soll.
Column( dtIGNITE, "DIEID" ) << Formula( <FORMULA> );</FORMULA>
Alternativ können Sie die Zeilen „New Column()“ und „Formula()“ kombinieren.
Hoffentlich hilft das!
Betreff: Ausführen eines JMP-Skripts ohne zugehörige TabelleSie könnten Folgendes in Betracht ziehen:
dt1 = New Table( "dtIgnite" );
query << Run Foreground( UpdateTable( dt1 ) );
Wait(0);
dt1 << New Column(...
Es kann zu konsistenteren Ergebnissen führen, wenn Sie das Handle der Tabelle zuweisen und es dann aktualisieren.
Betreff: Ausführen eines JMP-Skripts ohne zugehörige TabelleIch habe einen Screenshot angehängt, der hilfreich sein könnte.
Normalerweise führe ich meine Skripte über das Editorfenster aus.dtIGNITE ist die von der SQL-Tabelle generierte Tabelle, aber wenn ich das Skript ausführe, wird die Tabelle „Baselines-Ext“ geändert, da sie als aktuelle Datentabelle in der GUI aufgeführt ist.
Ich habe die Zeilen hinzugefügt:
dtIGNITE << Set Name ("RUNS");
Current Date Table = Data Table("RUNS");
zu meinem JSL, aber das hat das Problem nicht behoben.
Wenn in JMP keine anderen Tabellen geöffnet sind, funktioniert das Skript einwandfrei wie beschrieben.
Ich werde die Debug-Option ausprobieren und aktualisieren, wenn ich etwas finde.

Betreff: Ausführen eines JMP-Skripts ohne zugehörige Tabelle@PChemMan ,
Ich bin mir nicht sicher, ob ich Ihre Frage richtig verfolge. Bitte geben Sie in Ihrer Antwort eine detailliertere Erklärung an, falls das, was ich hier versuche, nicht hilft.
Gehen wir jedoch von einigen Annahmen aus und sehen wir uns an, dass Sie zwei Tabellen haben – eine Tabelle heißt „dtIGNITE“, die andere nennen wir sie vorerst „SQLTable“. Sie befürchten, dass Ihr Skript Änderungen an der dtIGNITE-Tabelle statt an der SQLTable vornimmt?
Wenn das so ist, können Sie versuchen, den folgenden Code hinzuzufügen
Current Data Table = Data Table("SQLTable"); bevor irgendwelche Manipulationen vorgenommen werden. Dadurch sollte die von SQL generierte Tabelle zur aktuellen Tabelle werden.