Hallo,
Ich habe eine Anwendung erstellt, bei der der Benutzer Spalten zur Verwendung beim Erstellen eines Modells für ausgewählte PQAs durch die Verwendung von modalen Fenstern auswählt, wie in der angehängten JMP-Datei mit den Spielzeugdaten und dem Skript mit dem Titel "Modell für ausgewählte PQAs und Säulen".
Dieses Modell soll eine benutzerdefinierte Ausgabe für jede PQA erstellen, die für einen beliebigen Datensatz mit einer beliebigen Schreibweise von Spaltennamen ausgewählt wurde. Wenn das Skript ausgeführt wird, erscheint ein Popup-Fenster, in dem der Benutzer aufgefordert wird, bestimmte Spalten auszuwählen. Dieses Fenster ist in der folgenden Abbildung dargestellt:

Das nächste Fenster fordert den Benutzer auf, die PQAs und die Speicherbedingungen festzulegen, und fragt, ob der Benutzer den Teildatensatz für jede PQA-Speicherbedingung anzeigen möchte oder nicht. Das heißt, für jede ausgewählte PQA wird im Hintergrund ein Teildatensatz erstellt. Dann werden Modell- und Diagrammergebnisse erzeugt und dann bei jeder Iteration der for-Schleife an ein Fenster mit den angepassten und formatierten Daten (mit den LSL- und USL-Y-Achsenlinien und Y-Achsenbeschriftungen mit Messungen) angehängt.

Hier ist der JSL-Skriptcode, der die Ausgabe erzeugt, wenn die Benutzereingabe aus den oben genannten Fenstern erfolgt:
//select the data in the original data table
Names Default To Here( 1 );
dt = Current Data Table();
//get the unique PQAs
col9 = Column(dt, "PQA");
unique_pqa = Associative Array( col9 ) << get keys;
/////////////////////////////////////////////////////////////
//User Selection Menu(s)
/////////////////////////////////////////////////////////////
//Part 1: ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Column names",
<<MODAL></MODAL>
Mit meinem erstellten Ausgabefenster möchte ich das Skript mit allen darin enthaltenen Daten (von denen die Teilmengendaten abhängig sind) in der ursprünglichen Datentabelle speichern können. Wenn ich jedoch die Skripte für alle Ausgaben im Skriptfenster speichere, erhalte ich die folgenden Ergebnisse:
Beachten Sie die
Where ( :PQA == pqa_val & column(listDT, set_storage_condition_col) == selected_stor_cond )
-Anweisung verhindert, dass das Skript funktioniert.
Ich möchte, dass diese Anweisung in diesem Skript die bestimmte Ausgabe hat. In dem Spielzeug-Datensatz, den ich angehängt habe, ist beispielsweise die
column(listDT, set_storage_condition_col)
entspricht : Lagerzustand
Wenn ich zusätzlich A als auswählen würde pqa_val ( so dass :PQA == "A" ) und 5C als die selected_stor_cond (so dass : Lagerzustand == "5C" ).
Das erzeugte Ausgabeskript wäre jedoch nicht vorhanden, obwohl ich mich auf die Benutzereingabe beziehe. Warum schreibt JMP diese Werte nicht wie in diesem Beispiel oben in das Skript für jede einzelne Instanz in der Schleife?
Fügen Sie mit Eval Insert, Eval Expr, Parse und Substitute einen Ausdruck in einen anderen ein sollte dir helfen. Auch << Fenster schließen ist bei Tastendrücken nicht erforderlich, da Sie modale Fenster verwenden.
Ich habe ein Eval(EvalExpr()) und einige Expr() um und innerhalb der where-Anweisung hinzugefügt.:
Mehr sehen...
//select the data in the original data table
Names Default To Here(1);
dt = Current Data Table();
//get the unique PQAs
col9 = Column(dt, "PQA");
unique_pqa = Associative Array(col9) << get keys;
/////////////////////////////////////////////////////////////
//User Selection Menu(s)
/////////////////////////////////////////////////////////////
//Part 1: ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Column names",
<<MODAL></MODAL>
Vielen vielen Dank. Ich habe nicht einmal daran gedacht, Eval() und ähnliches zu verwenden. Ich werde auf jeden Fall mehr darüber lesen und mir den von Ihnen bereitgestellten Link ansehen.