¿Cómo enumerar dinámicamente los nombres de columna de la tabla de datos seleccionados?Hola,
Estoy tratando de crear una ventana como Tables-Join, en la que el segundo cuadro de esquema podría enumerar dinámicamente los nombres de las columnas de la tabla de datos seleccionada en el cuadro de lista de la esquina superior izquierda.
Gracias de antemano.
secuencias de comandosventanasRe: ¿Cómo enumerar dinámicamente los nombres de las columnas de la tabla de datos seleccionada?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.
);Reemplace la tabla de datos ("clase grande") con la tabla de datos (dt), funciona.
Re: ¿Cómo enumerar dinámicamente los nombres de las columnas de la tabla de datos seleccionada?Mirando esto rápidamente, hay dos cosas que deben tenerse en cuenta al usar Filter Col Selector:
- Parece que Filter Col Selector siempre usa la tabla de datos actuales () y no puede darle una referencia directa a la tabla de datos que desea usar. Según el Índice de secuencias de comandos, debería aceptar Datatable (nombre) como argumento, por lo que lo más probable es que se trate de un error (al menos en JMP16.1).
- El triángulo rojo de Filter Col Box es un DisplayBox diferente que debe eliminarse.
Para evitar la referencia, puede intentar cambiar la Tabla de datos actual () en función de la selección del usuario y eliminar también el triángulo rojo, puede envolver Filter Col Box alrededor de V List Box y eliminarlo.
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()));
)
)
);También aquí hay un script simple para replicar el problema con 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: ¿Cómo enumerar dinámicamente los nombres de las columnas de la tabla de datos seleccionada?Gracias por su respuesta. Reemplazo 'cuadro de lista de columnas' con 'selector de columnas de filtro', no funciona como se esperaba, queda un triángulo rojo cada vez que selecciono una tabla, la lista de columnas no se actualiza en consecuencia.
¿Cómo funciona usando '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: ¿Cómo enumerar dinámicamente los nombres de las columnas de la tabla de datos seleccionada?Hola,
Puede usar un código como el siguiente para hacer esto. Intente ejecutar este código cuando tenga algunas tablas de datos abiertas.
Salud,
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 ) );
)
)
);

