Wählen Sie die Tabelle und dann die Spalten ausHallo, ich bin neu in der Verwendung von JMP und JSL und habe Probleme beim Erstellen eines Skripts, das eine Tabelle und dann zwei Spalten auswählt und dann etwas damit macht.
Hier ist ein Beispiel
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> 0,
Print("Table selected: "||dtName[1]),
Print("No table selected")
)
);
/* Here I tried several options like
current data table (dt);
dt << get data table;
and other but I cannot find what fits well */
xvar = .;
yvar = .;
win = New Window( "Compared Values",
<<MODAL></MODAL></MODAL>In diesem Beispiel versuche ich ein einfaches Skript, bei dem ich eine der bereits geöffneten Tabellen auswählen, zwei Spalten auswählen und einen einfachen Plot erstellen kann. Allerdings gelingt es mir nicht, das Programm so zu gestalten, dass es die von mir ausgewählte Tabelle erkennt.
In Zukunft muss ich mit wenigen Tabellen gleichzeitig interagieren und verschiedene Spalten aus verschiedenen Tabellen auswählen, um meine Ergebnisse zu erhalten. Ich dachte, dass dieses Skript ein einfacher Anfang wäre. Ich wäre sehr dankbar, wenn mir jemand auch eine kurze Erklärung geben könnte, warum ich die Tabelle, die ich im ersten Feld auswähle, nicht auswählen kann, oder wie ich sie verbessern kann, zusammen mit der Lösung für mein Skript.
Danke!
Automatisierung und SkripterstellungErgebnisse teilen und kommunizierenBetreff: Tabelle und dann Spalten auswählenIch empfehle Ihnen, im Scripting Guide mehr über modale Fenster zu lesen.Ehrlich gesagt empfehle ich Ihnen, den gesamten Scripting Guide zu lesen.
Hilfe==>JMP-Dokumentationsbibliothek
Betreff: Tabelle und dann Spalten auswählenVielen Dank, Ihre Beispiele klären die meisten meiner Fragen. Mein Hauptproblem bestand darin, auf die Tabelle zu zeigen, damit mein Code funktioniert. Jetzt, da ich all diese verschiedenen Optionen sehe, ist es sehr klar, wo meine Fehler waren.
Noch etwas, wenn Sie sagen: „ Modale Fenster verfügen über einige Standardaktionen mit den Schaltflächen „OK“ und „Abbrechen“. Was empfehlen Sie mir, um mehr darüber zu erfahren? Ich habe die Skriptanleitung, aber ich habe nichts darüber gelesen. Glauben Sie, dass ich sie dort finden kann? Oder schlagen Sie eine andere Quelle vor?
Danke!
Betreff: Tabelle und dann Spalten auswählenHallo,
Ich habe weitere Probleme mit Ihrem ursprünglichen Skript gefunden, die ich meiner Meinung nach gelöst habe (z. B. falscher Verweis auf die Datentabelle in Ihrem Col-List-Feld).
Hier ist meine Lösung, die aus Programmiersicht immer noch etwas umständlich sein könnte:
Names Default to Here( 1 );
show (dt);
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> require the user to select two variables before clicking OK
Text Box( " Select test values. " ),
H List Box(
Text Box( "Select Variable " ),
x = Col List Box(
Data Table (dtxt), // data table reference > UPDATED the call to selected data table
all, // display all columns from the data table
xvar = (x << Get Selected)[1];
// get the name of the selected column before the window closes
Show( xvar );
),
Text Box( "Select ID" ),
y = Col List Box(
Data Table (dtxt), //> UPDATED the call to selected data table
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
Data Table (dtxt) << Graph Builder( // Added specific call to the seleted data table
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 1 ),
Variables( X( as column (xvar) ), Y( As Column (yvar) ) ),
Elements( Points( X, Y, Legend( 6 ) ) )
);</MODAL>Betreff: Tabelle und dann Spalten auswählenModale Fenster verfügen über einige Standardaktionen mit den Schaltflächen „OK“ und „Abbrechen“, die den Code, den Sie vermuten, durcheinander bringen können.Ich finde es besser, die Standardaktionen zu übernehmen und einfache Anpassungen an meinem Code vorzunehmen, um das zu bekommen, was ich will.Hier ist meine Änderung an Ihrem Tabellenauswahlteil Ihres Codes, um die ausgewählte Datentabelle sowohl als aktuelle Datentabelle als auch die Variable „dt“ als Zeiger auf die Datentabelle festzulegen.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>
@Thierry_S Der Vorschlag, eine Liste zur Lösung des Problems zu verwenden, ist gut.Allerdings mache ich es etwas anders.Ich speichere den vollständigen Verweis auf die Datentabelle in der Liste, nicht nur den Namen.
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, data table(DataTable(t) << getName));
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>Betreff: Tabelle und dann Spalten auswählenVielen Dank, aber es löst mein Problem nicht. Eigentlich hatte ich schon einmal ein solches Skript und begann, die Dinge zu verkomplizieren, weil ich es nicht hinbekomme, dass meine Col List Box die Liste der Spalten auf die ausgewählte Datentabelle aktualisiert. Vielleicht liegt mein Problem in diesem Teil des Codes?Betreff: Tabelle und dann Spalten auswählenHallo,
Es sieht so aus, als ob Sie möglicherweise komplizierte Dinge haben, wenn Sie einen Index erstellen, um die Ausgabe von dtlb dt zuzuweisen.
Ich frage mich, ob die folgende Variante für Sie besser funktionieren würde (keine Notwendigkeit mehr, „OKScript“ zu haben).
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>