Comment répertorier dynamiquement les noms de colonne de la table de données sélectionnée ?Bonjour,
Je suis en train de créer une fenêtre comme Tables-Join, dont la deuxième zone de contour pourrait répertorier dynamiquement les noms de colonne de la table de données sélectionnée dans la zone de liste du coin supérieur gauche.
Merci d'avance.
Scriptles fenêtresRe : Comment répertorier dynamiquement les noms de colonne de la table de données sélectionnée ?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.
);Remplacez la table de données ("grande classe") par la table de données (dt), ça marche.
Re : Comment répertorier dynamiquement les noms de colonne de la table de données sélectionnée ?En regardant rapidement cela, il y a deux choses qui doivent être prises en compte lors de l'utilisation de Filter Col Selector :
- Il semble que Filter Col Selector utilise toujours la table de données actuelle () et vous ne pouvez pas lui donner une référence directe à la table de données que vous souhaitez utiliser. Basé sur l'index de script, il devrait accepter Datatable(name) comme argument, donc très probablement un bogue (au moins dans JMP16.1).
- Le triangle rouge de Filter Col Box est une DisplayBox différente qui doit être supprimée.
Pour contourner la référence, vous pouvez essayer de modifier la table de données actuelle () en fonction de la sélection de l'utilisateur et de supprimer également le triangle rouge, vous pouvez envelopper Filter Col Box autour de V List Box et le supprimer.
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()));
)
)
);Voici également un script simple pour reproduire le problème avec Filter Col Selector :
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"))
);Re : Comment répertorier dynamiquement les noms de colonne de la table de données sélectionnée ?Merci pour votre réponse. Je remplace 'col list box' par 'filter col selector', cela ne fonctionne pas comme prévu, un triangle rouge à chaque fois que je sélectionne une table, la liste des colonnes ne se met pas à jour en conséquence.
comment cela fonctionne-t-il en utilisant 'filter col selector' ?
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 ) );
)
)
);

Re : Comment répertorier dynamiquement les noms de colonne de la table de données sélectionnée ?Bonjour,
Vous pouvez utiliser un code comme celui-ci pour le faire. Essayez d'exécuter ce code lorsque vous avez quelques tables de données ouvertes.
Salutations,
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 ) );
)
)
);

