¿Cómo asignar una columna a una lista?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />En JSL, existe una función de diagnóstico de columnas en la que una columna de una tabla se puede asignar a una lista mediante la función ColList. Cuando se ejecuta el script, el usuario debe hacer clic en un botón para realizar la tarea. Requiere entrada interactiva del usuario.
Col_dlg = Diálogo de columnas(
Título("Asignación de variables"),
::x = ColList("ID de ejecución", MinCol(1), MaxCol(1), Columnas(:LOTE)),
.....
);
¿Hay alguna manera de escribir un script de modo que se pueda asignar una columna a una lista sin que el usuario haga clic en el botón en la ventana de diálogo (no se mostrará ninguna ventana de diálogo cuando se ejecute)?
Lo intenté:
::x = ColList("ID de ejecución (obligatorio)", MinCol(1), MaxCol(1), Columnas(:LOT));
::x = :LOTE << Obtener valores;
::x = Columna(dt,"LOTE");
todo falló. ¿Alguna pista?
Re: ¿Cómo asignar una columna a una lista?Disculpa, mi error. Mi explicación no fue clara. Lo que me gusta hacer es utilizar asignaciones var globales robustas a algunas columnas para reemplazar la función Diag de columna de modo que no se requiera una respuesta interactiva del usuario. Aquí está la situación:
En mi rutina principal, hay un Diag de columna en el que algunas columnas se asignan a algunas variables globales, que se llamarán en muchas funciones existentes en las bibliotecas. Hay algunos comandos utilizados en esas funciones lib:
N_x = NArtículos(x);
Column(dt, Eval(x2)) << Establecer propiedad("Niveles de orden de filas", (1));
Tabla de variabilidad(...)
Bivariado(..)
....
No se permiten cambios en esas funciones lib. Actualmente, las variables globales asignadas mediante la función Column Diag funcionan bien sin ningún problema con las funciones lib existentes. Pero todos los intentos sugeridos anteriormente pueden funcionar para algunos comandos, pero generar errores en otros.
Espero que mi explicación esta vez sea clara :-). O probablemente agregue más confusión :-(.
John
Re: ¿Cómo asignar una columna a una lista?No veo ninguna razón específica para imitar la salida de ColList aquí, pero puedes crear una lista con una columna como esta:
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
columna = { columna ( dt , "Nombre" )} ;
columna ( dt , columna ) << Establecer propiedad ( "Niveles de orden de filas" , ( 1 )) ;
Pero para su ejemplo, una variable de columna normal es más sencilla:
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
columna = columna ( dt , "Nombre" ) ;
columna << Establecer propiedad ( "Niveles de orden de filas" , ( 1 )) ;
Otra forma más basada en una lista de columnas:
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
:: X = ( dt << obtener nombres de columnas ())[ 1 ] ;
:: X << Establecer propiedad ( "Niveles de orden de filas" , ( 1 ) ) ;
Re: ¿Cómo asignar una columna a una lista?Sí, usando
::x2 = Columna(dt, "LOTE") << Obtener valores;
me dará una lista con todos los valores bajo la columna LOT, pero este ::x2 no "actuará" exactamente como el ::x asignado usando la función ColList del Diag. de columna. Por ejemplo, el siguiente comando
Column(dt, Eval(x)) << Establecer propiedad ("Niveles de orden de filas", (1));
con el ::x asignado usando la función ColList, pero obtendré un error cuando llamo
Column(dt, Eval(x2)) << Establecer propiedad("Niveles de orden de filas", (1));
El mensaje de error es:
"No se pudo encontrar la columna en el acceso o evaluación de 'Columna', Columna (dt, Evaluación (x))"
Para el ::x asignado por la función ColList, Eval(x) me dará "LOTE";
Para el ::x2 asignado de esta manera, Eval(x) me dará una lista con todos los valores en la Columna LOT.
Lo que me gusta hacer es: encontrar una manera de asignar una columna a una lista, actuar EXACTAMENTE como la función ColList, pero sin una interfaz de usuario con la ventana de diálogo o una respuesta interactiva del usuario. Si alguien puede proporcionarme los códigos para la función ColList, ¡sería genial!
Re: ¿Cómo asignar una columna a una lista?Su penúltimo intento debería haber funcionado, pero quizás la tabla que contiene la columna LOT no era la tabla actual.La siguiente sintaxis funciona:
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
x1 = : nombre << obtener valores ;
x2 = columna ( dt , "nombre" ) << obtener valores ;
Asegúrese de que la variable que apunta a su tabla de datos esté configurada.Por ejemplo:
dt = tabla de datos ( "Mis lotes" ) ; // Tabla que contiene la columna LOT
:: X = Columna ( dt , "LOTE" ) << Obtener valores ;