Wie liste ich Spaltennamen ausgewählter Datentabellen dynamisch auf?Hallo,
Ich versuche, ein Fenster wie „Tables-Join“ zu erstellen, dessen zweites Gliederungsfeld die Spaltennamen der ausgewählten Datentabelle im Listenfeld in der oberen linken Ecke dynamisch auflisten könnte.
Danke im Voraus.
Datenmischung und -bereinigungMassenanpassungWindowsBetreff: Wie liste ich Spaltennamen ausgewählter Datentabellen dynamisch auf?Names Default To Here(1);
//Open two data tables
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Consumer Preferences.jmp");
//Make sure the one not used in filter col selector is current data table
Current Data Table(dt2);
wait(0);
//Create filter col selector with non current data table
New Window("Filter Col Selector Example",
fontobj = lb = Filter Col Selector(Data table(dt)) //replace "big class" with dt work.
);Ersetzen Sie die Datentabelle („große Klasse“) durch die Datentabelle (dt), es funktioniert.
Betreff: Wie liste ich Spaltennamen ausgewählter Datentabellen dynamisch auf?Wenn man sich das kurz ansieht, gibt es zwei Dinge, die bei der Verwendung von Filter Col Selector beachtet werden müssen:
- Anscheinend verwendet Filter Col Selector immer die aktuelle Datentabelle() und Sie können ihr keinen direkten Verweis auf die Datentabelle geben, die Sie verwenden möchten. Basierend auf dem Scripting-Index sollte es Datatable(name) als Argument akzeptieren, also höchstwahrscheinlich ein Fehler (zumindest in JMP16.1).
- Das rote Dreieck der Filter Col Box ist eine andere DisplayBox, die gelöscht werden muss.
Um die Referenzsache zu umgehen, können Sie versuchen, die aktuelle Datentabelle () basierend auf der Benutzerauswahl zu ändern und auch das rote Dreieck zu löschen. Sie können das Filter-Spaltenfeld um das V-Listenfeld wickeln und dieses löschen.
Names Default To Here(1);
//get a list of window names
windows = Get Data Table List();
/*remove ones that are not data tables--need to start at back of list, because its length will change as we delete items
For( i = N Items( windows ), i > 0, i--,
If( (Window( windows[i] ) << Window Class Name) != "DataTable",
Remove From( windows, i )
)
);
*/
//make a dialog window
nw = New Window("Sample",
vlb1 = V List Box(
lb1 = List Box(
windows, //populate the listbox with data table names
//here is the script that runs each time someone clicks in the top box
//delete the current column list box, if it exists
Try(vlb2 << delete);
//append a new v list box which includes filter col selector
Current Data Table(Data Table((lb1 << get selected)[1]));
vlb1 << append(vlb2 = V List Box(Filter Col Selector()));
)
)
);Hier ist auch ein einfaches Skript, um das Problem mit Filter Col Selector zu reproduzieren:
Names Default To Here(1);
//Open two data tables
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Consumer Preferences.jmp");
//Make sure the one not used in filter col selector is current data table
Current Data Table(dt2);
wait(0);
//Create filter col selector with non current data table
New Window("Filter Col Selector Example",
fontobj = lb = Filter Col Selector(Data table("Big Class"))
);Betreff: Wie liste ich Spaltennamen ausgewählter Datentabellen dynamisch auf?Danke für Ihre Antwort. Ich ersetze „Spaltenlistenfeld“ durch „Filter-Spaltenauswahl“, es funktioniert nicht wie erwartet, jedes Mal, wenn ich eine Tabelle auswähle, bleibt ein rotes Dreieck zurück, die Spaltenliste wird nicht entsprechend aktualisiert.
Wie funktioniert es mit dem „Filter-Spalten-Selektor“?
Names Default To Here( 1 );
//get a list of window names
windows = Get Data Table List();
/*remove ones that are not data tables--need to start at back of list, because its length will change as we delete items
For( i = N Items( windows ), i > 0, i--,
If( (Window( windows[i] ) << Window Class Name) != "DataTable",
Remove From( windows, i )
)
);
*/
//make a dialog window
nw = New Window( "Sample",
vlb1 = V List Box(
lb1 = List Box(
windows, //populate the listbox with data table names
//here is the script that runs each time someone clicks in the top box
//delete the current column list box, if it exists
Try( lb2 << delete );
//append a new col list box, with all columns of the data table selected in the listbox
vlb1 << append( lb2 = Filter Col Selector( Data Table( (lb1 << get selected)[1] ), all ) );
)
)
);

Betreff: Wie liste ich Spaltennamen ausgewählter Datentabellen dynamisch auf?Hallo,
Sie können dazu Code wie den folgenden verwenden. Versuchen Sie, diesen Code auszuführen, wenn Sie einige Datentabellen geöffnet haben.
Prost,
Brady
Names Default To Here( 1 );
//get a list of window names
windows = Window() << get window title;
//remove ones that are not data tables--need to start at back of list, because its length will change as we delete items
For( i = N Items( windows ), i > 0, i--,
If( (Window( windows[i] ) << Window Class Name) != "DataTable",
Remove From( windows, i )
)
);
//make a dialog window
nw = New Window( "Sample",
vlb1 = V List Box(
lb1 = List Box(
windows, //populate the listbox with data table names
//here is the script that runs each time someone clicks in the top box
//delete the current column list box, if it exists
Try( lb2 << delete );
//append a new col list box, with all columns of the data table selected in the listbox
vlb1 << append( lb2 = Col List Box( Data Table( (lb1 << get selected)[1] ), all ) );
)
)
);

