El cuadro de lista Col () no respeta la referencia de la tabla de datosUsando JMP 14.1:
Quiero que las personas seleccionen dos tablas de datos y luego muestren las columnas en esas tablas de datos en dos cuadros de lista de columnas. Sin embargo, cuando configuro las columnas en los cuadros, JMP solo establecerá las columnas de la tabla de datos activa y no respetará el argumento de la tabla de datos. ¿Alguna sugerencia?
Aquí hay un ejemplo rápido del comportamiento incorrecto:
dt = Nueva tabla ("Tabla 1", Agregar filas (0), Comprimir archivo al guardar (1), Nueva columna ("Columna 1", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ( [])), Nueva columna ("Columna 2", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([])), Nueva columna ("Columna 3", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([]))); dtNew = Nueva tabla ("Tabla 2", Agregar filas (0), Comprimir archivo al guardar (1), Nueva columna ("Columna 4", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ( [])), Nueva columna ("Columna 5", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([])), Nueva columna ("Columna 6", Numérico, "Continuo", Formato ("Mejor", 12), Establecer valores ([]))); nueva ventana ("Renombrador de columna", cuadro de lista h (cuadro de Panel ("Tabla de origen", SourceBox = Cuadro de lista de columnas (dt, Todo)), Cuadro de panel ("Tabla de destino", DestBox = Cuadro de lista de puntos (dtnew, Todo) ,),));Este resultado es:
El resultado esperado es que en la lista de la izquierda se muestran las columnas 1,2,3 ya que esos son los nombres en la primera tabla. En su lugar, muestra la segunda tabla (la última creada y, como tal, la tabla activa) dos veces.
Re: El cuadro de lista Col () no respeta la referencia de la tabla de datosNo responde a su pregunta real, pero esto funciona (JMP 14.2 en una Mac):
dt = New Table( "Table 1",
Add Rows( 0 ),
Compress File When Saved( 1 ),
New Column( "Column 1",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [] )
),
New Column( "Column 2",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [] )
),
New Column( "Column 3",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [] )
)
);
dtNew = New Table( "Table 2",
Add Rows( 0 ),
Compress File When Saved( 1 ),
New Column( "Column 4",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [] )
),
New Column( "Column 5",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [] )
),
New Column( "Column 6",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [] )
)
);
new window("Column renamer",
h list box(
Panel box("Source table",
SourceBox = Col List Box(DataTable( "Table 1"),All)
),
Panel box("Destination table",
DestBox = Col List Box(DataTable( "Table 2"),All),
),
)
);
Re: El cuadro de lista Col () no respeta la referencia de la tabla de datosHola Ian, gracias por tu ayuda, pero de hecho no resuelve mi problema. Aquí hay un fragmento de código más grande de lo que realmente estoy tratando de hacer. Por lo tanto, selecciona dos tablas diferentes de las tablas abiertas y, a medida que selecciona una tabla diferente, la lista de columnas a continuación se llena con las columnas de las tablas seleccionadas:
Names default to here(1);
ListOfOpenTables = sort list(Get Data Table List());
ColumnWidth = 300;
new window("Column renamer",
h list box(
Panel box("Source table",
v list box(
FirstDT = List box(ListOfOpenTables, maxSelected(1), width(ColumnWidth),
dt = Data Table((FirstDT << get selected())[1]);
SourceBox << Set items(Data Table((FirstDT << get selected())[1]) << Get Column Names("String"));
),
SourceBox = Col List Box(,nlines(40), width(ColumnWidth),
OldCounter << set text(char(n items(SourceBox << get selected())) || " Columns selected");
dt << Select columns(SourceBox << get selected());
),
OldCounter = Text Box("")
)
),
Panel box("Destination table",
v list box(
SecondDT = List box(ListOfOpenTables, maxSelected(1), width(ColumnWidth),
dtnew = Data Table((SecondDT << get selected())[1]);
DestBox << Set items(Data Table((SecondDT << get selected())[1]) << Get Column Names("String"));
),
DestBox = Col List Box(,nlines(40), width(ColumnWidth),
NewCounter << set text(char(n items(DestBox << get selected())) || " Columns selected");
dtnew << Select columns(DestBox << get selected())
),
NewCounter = Text Box("")
)
),
Panel box("Actions",
v list box(
button box("Change column names",DoTheWork),
button box("Undo",Undo)
)
)
)
);Re: El cuadro de lista Col () no respeta la referencia de la tabla de datosLo siento Paul, no tuve tiempo para entender los matices de lo que estás tratando de hacer.
Pero aquí hay un fragmento de código antiguo que puede acercarlo (no usando 'ColListBox ()'):
Names default to here(1);
ListOfOpenTables = sort list(Get Data Table List());
updateCLB =
Expr(
thisTable = (tlb << getSelected)[1];
CMD = Expr(cols = DataTable(tableTBD) << getColumnNames("String"));
SubstituteInto(CMD, Expr(tableTBD), Eval(thisTable));
CMD;
clb << setItems(cols);
);
clbAction =
Expr(
Speak("Column "||(clb << getSelected)[1]||" was selected.");
);
nw = NewWindow("Test",
tlb = ListBox(ListOfOpenTables, maxSelected(1), updateCLB),
clb = ListBox({"Pick a table above"}, maxSelected(1), clbAction)
);Re: cuadro de lista de columnas () no respeta la referencia de la tabla de datosSí, con el uso de un cuadro de lista estándar lo hice funcionar, pero no se parece a los diálogos de selección de columnas que JMP usa normalmente. Y no muestra la agrupación de columnas de su tabla de datos. Por lo tanto, me gustaría implementarlo con el cuadro de lista de columnas
Re: cuadro de lista de columnas () no respeta la referencia de la tabla de datos¡Entendido! Puede hacer algo similar con 'ColListBox ()' si lo prefiere:
Names default to here(1);
ListOfOpenTables = sort list(Get Data Table List());
updateCLB =
Expr(
Try(clb << delete);
thisTable = (tlb << getSelected)[1];
CMD = Expr(nw << Append(clb = ColListBox(DataTable(tableTBD), All, maxSelected(1), clbAction)));
SubstituteInto(CMD, Expr(tableTBD), Eval(thisTable));
CMD;
);
clbAction =
Expr(
Speak("Column "||(clb << getSelected)[1]||" was selected.");
);
nw = NewWindow("Test", tlb = ListBox(ListOfOpenTables, maxSelected(1), updateCLB));