Abrir múltiples tablas de datos<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Entonces, quiero crear una aplicación que solicite al usuario que especifique una cierta cantidad de tablas de datos, después de lo cual el usuario puede elegir las tablas correspondientes. También me gustaría agregar columnas a cada una de esas tablas. Todavía soy nuevo en jmp/jsl pero a continuación se muestra mi script que, por supuesto, no funciona. Cualquier ayuda es bien agradecida;
Nueva ventana( "Número de tablas de datos",
<
Cuadro de texto ("Número de tablas de datos"),
variablebox = Cuadro de edición de número(),
Cuadro de botones( "Aceptar"),
Cuadro de botón( "Cancelar")
);
N = cuadro de variables << obtener;
Para (i = 1, i <= N elementos (dt), i++,
dt = Abrir()
Nombres predeterminados aquí (1);
dt=Tabla de datos actuales (i);
dt << Nueva columna("ColumnaA", Numérico, continuo, Formato("Mejor", 5));
dt << Nueva columna("ColumnaB", Numérico, continuo, Formato("Mejor", 5));
);
PD: Sé que el script para agregar columnas adicionales tiene que ir en el bucle For de alguna manera, pero si puedo abrir las tablas de datos, ¿cómo puedo agregar las columnas?
PMroz jordanhiller@jmp chris.kirchberg CHCampos MarkBailey
Re: Abrir múltiples DataTablesVaya, eso funciona. ¡¡¡Gracias!!!
Re: Abrir múltiples DataTables¡Por supuesto! Muchas gracias por aclararme, Melanie. . .
Cualquiera que lea este hilo también debería tener en cuenta que (contrariamente a los comentarios en el código) OS/X y Windows respetan la palabra clave "múltiple".
Re: Abrir múltiples DataTablesEl argumento múltiple de PickFile() es una palabra clave, no un valor booleano. Prueba esto:
Seleccionar archivo (
"Seleccione uno o más archivos" , // Inmediato
"$datos_muestra" , // carpeta inicial
{ "Archivos JMP|jmp;jsl;jrn" , "Todos los archivos|*" } , // Lista de filtros de archivos a aplicar (ignorados por OS/X)
1 , // Filtro de archivo inicial a aplicar (índice del elemento en la lista anterior)
0 , // Guardar bandera: especifique una ventana 'Guardar' o 'Abrir'. Establezca un valor de 1 o 0 respectivamente.
Vacío () , // archivo predeterminado
"múltiple" // Múltiple: si 'Guardar bandera' = 0, usar un valor de 1 permite abrir más de un archivo (ignorado por OS/X)
) ;
Tenga en cuenta que para utilizar el argumento múltiple, se deben especificar todos los argumentos anteriores; no puede omitir las 2 banderas y el archivo predeterminado, por ejemplo.
Re: Abrir múltiples DataTablesMmm. Preguntaré a I+D, porque creo que debería funcionar.
Siempre es mejor utilizar funciones integradas si es posible, pero siempre puedes hacer algo como:
NombresDefaultToHere ( 1 ) ;
directorio = SeleccionarDirectorio ( "Mover a la carpeta que contiene sus archivos" , "$ESCRITORIO" ) ;
noroeste = Nueva ventana ( "Abrir varios archivos" ,
PanelBox ( "Seleccione uno o más archivos" ,
libra = Cuadro de lista ( Archivos en el directorio ( directorio )) ,
AlineaciónBox ( NCol ( 2 ) ,
Caja de botones ( "DE ACUERDO" , OKScript ) ,
Caja de botones ( "Cancelar" , noroeste << Cerrar ventana )
)
)
) ;
OKScript =
Expr. (
noroeste << Cerrar ventana ;
archivos = libra << obtener seleccionado ;
Para ( F = 1 , F <= NArtículos ( archivos ) , F ++, Abierto ( directorio || "/" || archivos [ F ])) ;
) ;
Re: Abrir múltiples DataTablesGracias Ian, has sido de gran ayuda. Probé el código anterior y también funciona en Windows. También pude editar e incorporar el código a mi trabajo. Sin embargo, sólo puedo abrir un archivo a la vez. Según su explicación, agregar el último 1 en la función Seleccionar archivo debería permitir abrir varios archivos, pero eso no funciona en mi computadora (por cierto, Windows).¿Hay alguna forma de solucionar este problema para poder abrir varios archivos al mismo tiempo? Gracias
Re: Abrir múltiples DataTablesAhora entiendo que su pregunta es sobre la selección de qué archivos abrir. . .
Parece que 'PickFile()' ya puede ser lo suficientemente flexible para hacer lo que necesita (consulte 'Ayuda > Índice de secuencias de comandos').
En la medida en que necesita interactuar con el sistema operativo, se podría esperar una ligera diferencia entre Windows y OS/X, y parece que ese es el caso aquí. Desafortunadamente, sin embargo, no tengo una máquina con Windows para probar el siguiente código (también supongo que para selecciones múltiples, 'PickFile()' devolverá una lista):
Nombres predeterminados aquí ( 1 ) ;
// Utilice 'PickFile()' para obtener una lista de archivos para abrir (solo Windows)
lista de archivos =
Seleccionar archivo (
"Seleccione uno o más archivos" , // Inmediato
"$ESCRITORIO" , // carpeta inicial
{ "Archivos JMP|jmp;jsl;jrn" , "Todos los archivos|*" } , // Lista de filtros de archivos a aplicar (ignorados por OS/X)
1 , // Filtro de archivo inicial a aplicar (índice del elemento en la lista anterior)
0 , // Guardar bandera: especifique una ventana 'Guardar' o 'Abrir'. Establezca un valor de 1 o 0 respectivamente.
Vacío () , // archivo predeterminado
1 // Múltiple: si 'Guardar bandera' = 0, usar un valor de 1 permite abrir más de un archivo (ignorado por OS/X)
) ;
// Si solo se selecciona un archivo, fileList no será una lista, por lo que debemos crearla nosotros mismos
si ( ! es lista ( lista de archivos ) , lista de archivos = Lista de evaluación ({ lista de archivos })) ;
// Abre los archivos y almacena los nombres de las tablas JMP correspondientes.
nombres de tabla = {} ;
para ( F = 1 , F <= NArtículos ( lista de archivos ) , F ++,
dt = Abierto ( lista de archivos [ F ]) ;
Insertar en ( nombres de tabla , dt << obtenerNombre ) ;
) ;
Re: Abrir múltiples DataTablesHola Ian,
Gracias por los comentarios, haré todo lo posible para explicarlo mejor. Quiero el script que le pide al usuario el número de tablas de datos que desea abrir y luego le solicita que seleccione las tablas que desea abrir correspondientes al número solicitado anteriormente.El algoritmo se verá así a continuación:
- Ejecutar guión
- Se le pregunta al usuario cuántas tablas de datos desea abrir (una ventana modal facilitará las cosas), por ejemplo: el usuario escribe, por ejemplo 3
- Luego se le pide al usuario que elija las 3 tablas de datos que prefiera.
- Agregue "Columna A" y "Columna B" a cada una de las 3 tablas de datos
Espero que esto ayude a aclarar mejor el problema. ¡Gracias una vez más!
Re: Abrir múltiples DataTablesCreo que necesitas dar un poco más de detalles sobre lo que buscas, por favor.
Suponiendo que para el primer paso desea permitir selecciones de tablas abiertas (en lugar de selecciones de qué tablas abrir), eche un vistazo a:
NombresDefaultToHere ( 1 ) ;
// Muestra las tablas abiertas en la sesión y permite al usuario seleccionar algunas
tablas abiertas = {} ;
Para ( t = 1 , t <= NTable () , t ++, Insertar en ( tablas abiertas , Tabla de datos ( t ) << obtenerNombre )) ;
noroeste =
Nueva ventana ( "Selecciona las Mesas que Requieres" ,
libra = Cuadro de lista ( tablas abiertas ) ,
AlineaciónBox ( NCol ( 2 ) , Caja de botones ( "DE ACUERDO" , OKscript ) , Caja de botones ( "Cancelar" , noroeste << Cerrar ventana ))
) ;
//Hacer algo con las tablas seleccionadas (en este caso, simplemente imprimir)
OKScript =
Expr. (
noroeste << Cerrar ventana ;
Tablas seleccionadas = libra << obtener seleccionado ;
Borrar registro () ;
si ( NArtículos ( Tablas seleccionadas ) > 0 ,
Para ( t = 1 , t <= NArtículos ( Tablas seleccionadas ) , t ++,
Imprimir ( "Mesa " || Tablas seleccionadas [ t ] || "seleccionado." )
) ,
Imprimir ( "No hay mesas seleccionadas." )
) ;
) ;