¿Cómo llenar el cuadro combinado con valores distintos?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Hola
¿Cuál es la mejor manera de completar un cuadro combinado con los distintos valores de una columna? Quiero poder indicarle al usuario qué datos (en este caso, número de pieza) desea analizar y luego, según su selección, el código creará una nueva tabla de subconjunto solo del valor seleccionado.
Me imagino que el código será algo como esto:
valores = : nombre de columna aquí << Obtener valores distintos ;
Nueva ventana ( "Ejemplo" ,
cb = Caja combo ( valores ) ,
Caja de botones ( "DE ACUERDO" )
) ;
Algo de código aquí para crear una tabla de subconjunto...
¿Alguien sabe cuál sería la mejor práctica para hacer esto?
Gracias
¿Cómo llenar el cuadro combinado con valores distintos?Nunca probé la función en una columna numérica.Resultados interesantes.
Hice algunas pruebas de rendimiento de matrices asociativas frente a resumidas para determinar valores únicos, y fue bastante uniforme.Como ejemplo, utilicé una tabla con 180.000 filas.Ambos métodos tardaron 4 segundos en determinar valores únicos para 6 columnas.
Re: ¿Cómo llenar el cuadro combinado con valores distintos?¡Buena función! Si la columna es numérica, entonces Summarize() es preferible aquí al método Associative Array(). Resumir coloca comillas dobles alrededor de los niveles numéricos, mientras que los elementos de la lista generada por AA<
Para otros usos cuando se requiere el número en lugar de Char(número), el enfoque AA puede ser una mejor opción. El método AA también es general ya que no se limita a columnas y acepta muchos tipos de datos como elementos de lista (matrices, expresiones...).
Re: ¿Cómo llenar el cuadro combinado con valores distintos?Parece que los cuadros combinados se estropean con entradas en blanco.Si usa un cuadro de lista, funciona, aunque una de las entradas está en blanco, lo cual no desea.
Aquí está la función que uso para obtener valores únicos de una columna, que usa el Resumir dominio:
//------------------------------------------------ ---------------------
/* Nombre de la función Obtener valores únicos
Descripción: obtiene los valores únicos para una columna.Por ejemplo:
Indicaciones
------------
AAAAA
BBBBB
AAAAA
CCCCCC
CCCCCC
lista_única = obtener valores únicos (:Indicaciones)
devolverá {"AAAAA", "BBBBB", "CCCCC"}
Argumentos:
Descriptor de columna dtcol para calcular valores únicos para
*/
Obtenga valores únicos = Función ( { dtcol } , { local predeterminado } ,
// Truco de evaluación/expr para que esto funcione.
evaluar ( evaluación expr (
Resumir ( lista_única = Por ( exprés ( dtcol ))))) ;
lista_única ;
) ; // finaliza la obtención de valores únicos
A continuación se muestra un ejemplo que muestra cómo utilizar la función.Leí de antemano la tabla Datos físicos del automóvil y borré algunas entradas en la columna País.
dt = Abierto ( "$sample_data\Datos físicos del coche.jmp" ) ;
lista_países = obtener valores únicos ( Columna ( dt , "País" ) ) ;
para ( i = nitems ( lista_países ) , i > 0 , i --,
imprimir ( i ) ;
si ( lista_países [ i ] == "" ,
eliminar de ( lista_países , i ) ;
)
) ;
nw1 = Nueva ventana ( "Ejemplo" ,
cb = Caja combo ( lista_países ) ,
Caja de botones ( "DE ACUERDO" , nw1 << Cerrar ventana )
) ;
nw2 = Nueva ventana ( "Ejemplo" ,
libra = Cuadro de lista ( lista_países ) ,
Caja de botones ( "DE ACUERDO" , nw2 << Cerrar ventana )
) ;
Supongo que lo mejor que puedes hacer es agregar la eliminación del espacio en blanco a la función.
¿Cómo llenar el cuadro combinado con valores distintos?Lo hice funcionar usando un bucle For que ignora todas las celdas en blanco. Aquí está el código para cualquiera que tenga curiosidad:
parteArray = Matriz asociativa () ;
Para ( i = 1 , i <= N filas ( dt ) , i ++,
Si ( Parte [ i ] != "" ,
parteArray << Insertar ( Parte [ i ] )
)
) ;
parteArray = parteArray << obtener llaves ;
¿Cómo llenar el cuadro combinado con valores distintos?Descubrí que esto sucede cuando hay una celda en blanco en la columna. Si se eliminan las celdas en blanco, funciona bien. ¿Alguna idea de por qué no funciona con las celdas en blanco?
¿Cómo llenar el cuadro combinado con valores distintos?Gracias. Esto es justo lo que quería.
Sin embargo, esto no funciona para mi mesa. Si uso su código con la tabla de muestra "Big Class", funciona bien. Sin embargo, si sustituyo la tabla por la que tiene mis datos, el cuadro combinado queda en blanco. ¿Alguna idea de por qué? Cambiar las columnas hace que cambie el ancho del cuadro combinado, pero aún está vacío. Revisé las propiedades de la columna y son las mismas que las de Bog Class.
¿Algunas ideas?
gracias de nuevo
¿Cómo llenar el cuadro combinado con valores distintos?A entrada reciente del blog de JMP presentó diferentes formas de obtener una lista de valores únicos. Un enfoque que aprendí allí utiliza matrices asociativas.
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
socio = Matriz asociativa ( ( : sexo << obtener valores ) ) << obtener llaves ;
Nueva ventana ( "Ejemplo" , cb = Caja combo ( ( socio ) ) , Caja de botones ( "DE ACUERDO" ) ) ;