Cuadro de diálogo Columna: también copia las propiedades de la columna<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Tengo un script que abre múltiples tablas de datos y crea nuevas columnas en esas tablas de datos. ¿Es posible escribir un cuadro de copia de columnas que muestre todas las columnas de cada tabla de datos abierta? para que pueda seleccionar y copiar las únicas columnas que quiero con sus propiedades?
Mi código actual intenta concatenar las tablas de datos en una nueva tabla antes de copiar las columnas, pero parece JMP no me dejaba concatenar más de dos tablas de datos al mismo tiempo.
A continuación se muestra un resumen del código que escribí para que sea más fácil de editar. Gracias.
Nombres predeterminados hasta aquí ( 1 ) ;
// Use 'PickFile()' para obtener una lista de archivos para abrir (solo Windows)
lista de archivos = Seleccionar archivo (
"Seleccione uno de más archivos" , // Inmediato
"$ESCRITORIO" , // Carpeta inicial
{ "Archivos JMP|jmp;jsl;jrn;csv" , "Todos los archivos|*" } , // Lista de filtros de archivos para aplicar (ignorado por OS/X)
1 , // Filtro de archivo inicial a aplicar (índice de elemento en la lista anterior)
0 , // Indicador de guardar: especifique una ventana 'Guardar' o 'Abrir'. Establezca un valor de 1 o 0 respectivamente.
Vacío () , // archivo predeterminado
múltiple // Múltiple: si 'Save Flag' = 0, el uso de un valor de 1 permite abrir más de un archivo (OS/X lo ignora)
) ;
// Si solo se selecciona un archivo, la lista de archivos 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 sus nombres de tabla JMP correspondientes
nombres de tablas = {} ;
Para ( F = 1 , F <= N artículos ( lista de archivos ) , F ++,
dt = Abierto ( lista de archivos [ F ] ) ;
Insertar en ( nombres de tabla , dt << obtenerNombre ) ;
) ;
dt = Nueva tabla ( "Perro concatenado H" ) ;
//Crear Column Copier para copiar archivos
dt = Tabla de datos actual () ;
col_dlg = nueva ventana ( "Copiadora de columna" ,
caja de panel ( "Seleccione cuatro columnas para crear una nueva tabla con:" ,
col_clist = collistbox ( todo , ancho ( 200 ) , máximo seleccionado ( 4 )) ,
) ,
botonera ( "DE ACUERDO" ,
lista_columna_seleccionada = col_clist << se selecciona ;
col1 = lista_columna_seleccionada [ 1 ] ;
col2 = lista_columna_seleccionada [ 2 ] ;
col3 = lista_columna_seleccionada [ 3 ] ;
col4 = lista_columna_seleccionada [ 4 ] ;
// Crea una nueva tabla usando solo las dos columnas seleccionadas
dt2 = dt << Subconjunto ( columnas ( columna ( dt , col1 ) , columna ( dt , col2 ) , columna ( dt , col3 ) , columna ( dt , col4 ) ) ) ;
col_dlg << Cerrar ventana ;
)
) ;
Se agregó la tabla de datos.
El mensaje fue editado por: Luqman Olawin
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaHola Jim,
Traté de reemplazarlo con "nombre". Comenté la función "Por columna coincidente" y eso parece funcionar para mí. Muchas gracias por la ayuda, realmente lo aprecio!
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaEl error indica que no hay una columna denominada "ID de oblea en ID de lote".Esto es lo que es la columna coincidente en mis tablas de datos.Creo que el nombre de la columna con la que está haciendo coincidir se llama "nombre".Cambie las 2 referencias a "ID de oblea en ID de lote" a "nombre"
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaA continuación se muestra el error que obtengo de la ventana de registro. Edité la publicación para adjuntar las tablas de datos y todas tienen las mismas columnas con solo nombres de tabla diferentes.Me gustaría mantenga las columnas con el mismo nombre separadas para que cuando aparezca la copiadora de columnas, pueda seleccionar las columnas que me gustaría copiar. Gracias.
El acceso a la tabla de datos con ámbito requiere una columna o variable de la tabla de datos en el acceso o evaluación de 'dt:ID de oblea en ID de lote', dt:ID de oblea en ID de lote/*###*/
En el siguiente script, error marcado por /*###*/
Nombres predeterminados hasta aquí ( 1 );
fileList = Seleccionar archivo (
"Seleccione uno de más archivos",
"$ESCRITORIO",
{"Archivos JMP|jmp;jsl;jrn;csv", "Todos los archivos|*"},
1,
0,
Vacío(),
múltiple
);
If( !Es Lista( listaArchivos ),
lista de archivos = Lista de evaluación ( {lista de archivos} )
);
nombres de tabla = {};
For( f = 1, f <= N elementos( listaarchivos ), f++,
dttemp = Abrir (lista de archivos);
Insertar en (tableNames, dttemp << getName);
Si( f == 1,
dt = dttemp,
dtx = dt << Unirse(
Con (dttemp),
Por columnas coincidentes (
dt:ID de oblea en ID de lote/*###*/ = dttemp:ID de oblea en ID de lote
),
Conservar el orden de la tabla principal(),
Nombre de la tabla de salida ("Reloj H concatenado")
);
Cerrar( dttemp, nosave );
Cerrar (dt, no guardar);
dt = dtx;
);
);
dt = Tabla de datos actuales ();
col_dlg = Nueva Ventana( "Copiadora de Columnas",
Panel Box( "Seleccione cuatro columnas para crear una nueva tabla con:",
col_clist = Cuadro de lista de columnas (todos, ancho (200), máximo seleccionado (4))
),
Cuadro de botones ("OK",
lista_columnas_seleccionadas = lista_columnas << se selecciona;
col1 = lista_columnas_seleccionadas[1];
col2 = lista_columnas_seleccionadas[2];
col3 = lista_columnas_seleccionadas[3];
col4 = lista_columnas_seleccionadas[4];
dt2 = dt << Subconjunto(
columnas (
Columna (dt, col1),
Columna (dt, col2),
Columna (dt, col3),
Columna (dt, col4)
)
);
col_dlg << cerrar ventana;
)
);
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaHáblame de los diferentes archivos. ¿Tienen columnas que tienen los mismos nombres? Todas las columnas que tengan los mismos nombres colapsarán una encima de la otra en la combinación, utilizando la instrucción "combinar columnas con el mismo nombre (1)".Si cuenta con que la combinación mantenga separadas las columnas con el mismo nombre, entonces la sección de código que realiza la combinación tendrá que reconocer que la columna denominada "nombre" en la tabla de datos combinada ya no se llamará "nombre", sino "nombre de " y eso tendrá que manejarse en el script para permitir que se produzca la combinación.
¿La columna "nombre" en sus tablas de datos es un identificador único para cada fila?
¿Puede decirme qué mensajes de error se muestran en el registro de JMP (Ver ==> Registro)?
Aquí está el código que funciona sin errores en mi sistema.Tenga en cuenta que el directorio que estoy abriendo para encontrar los archivos de entrada, y también la columna que se usa para hacer coincidir en la unión, es diferente de su código.Aparte de eso, debería ser el mismo código.Este código funciona sin error. Tenga en cuenta que la suposición para que este código funcione es que, a excepción de la columna utilizada para la coincidencia (" ID de oblea en ID de lote").
Nombres predeterminados hasta aquí ( 1 ) ;
lista de archivos = Seleccionar archivo (
"Seleccione uno de más archivos" , // Inmediato
"c:\usuarios\txjim\documentos\multiarchivos" , // Carpeta inicial
{ "Archivos JMP|jmp;jsl;jrn;csv" , "Todos los archivos|*" } , // Lista de filtros de archivos para aplicar (ignorado por OS/X)
1 , // Filtro de archivo inicial a aplicar (índice de elemento en la lista anterior)
0 , // Indicador de guardar: especifique una ventana 'Guardar' o 'Abrir'. Establezca un valor de 1 o 0 respectivamente.
Vacío () , // archivo predeterminado
múltiple // Múltiple: permite abrir más de un archivo (OS/X lo ignora)
) ;
Si ( ! es lista (lista de archivos) ,
lista de archivos = Lista de evaluación ( {lista de archivos} )
) ;
nombres de tablas = {} ;
Para ( f = 1 , F <= N elementos (lista de archivos) , F ++,
dttemp = Abierto ( lista de archivos);
Insertar en ( nombres de tabla , dttemp << obtenerNombre ) ;
Si ( f == 1 ,
dt = dttemp ,
dtx = dt << Unirse (
Con (dttemp) ,
Por columnas coincidentes (dt : Nombre ( "ID de oblea en ID de lote" ) = dttemp : nombre ( "ID de oblea en ID de lote" ) ) ,
Conservar el orden de la tabla principal() ,
fusionar columnas del mismo nombre ( 1 ) ,
Nombre de la tabla de salida ( "Reloj H concatenado" )
) ;
Cerca ( dttemp , no guardar) ;
Cerca ( dt , no guardar) ;
dt = dtx ;
) ;
) ;
dt = Tabla de datos actual () ;
col_dlg = Nueva ventana ( "Copiadora de columna" ,
caja de paneles ( "Seleccione cuatro columnas para crear una nueva tabla con:" , col_clist = Cuadro de lista de columnas ( todo , ancho( 200 ) , máximo seleccionado ( 4 ) ) , ) ,
Caja de botones ( "DE ACUERDO" ,
lista_columna_seleccionada = col_clist << se selecciona;
col1 = lista_columna_seleccionada[ 1 ] ;
col2 = lista_columna_seleccionada[ 2 ] ;
col3 = lista_columna_seleccionada[ 3 ] ;
col4 = lista_columna_seleccionada[ 4 ] ;
dt2 = dt << Subconjunto (columnas( Columna ( dt , columna1) , Columna ( dt , col2) , Columna ( dt , col3) , Columna ( dt , columna4 ) ) ) ;
col_dlg << Cerrar ventana;
) ;
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaTampoco funciona. El cambio ni siquiera une las tablas.
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaEl problema es que JMP cambia el nombre de las columnas cuando une tablas, cuando las tablas tienen columnas con el mismo nombre.Por lo tanto, su columna llamada "nombre" se cambió después de la primera combinación.Así que cambia la línea:
dtx = dt << Unirse ( Con ( dttemp ) , Por columnas coincidentes ( nombre = nombre ) , Conservar el orden de la mesa principal () , Nombre de la tabla de salida ( "Reloj H concatenado" ) ) ;
a
dtx = dt << Unirse ( Con ( dttemp ) , Por columnas coincidentes ( nombre = nombre ) , Conservar el orden de la mesa principal () , Nombre de la tabla de salida ( "Reloj H concatenado" ), fusionar columnas del mismo nombre (1) ) ;
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnagracias jim El tiempo no resolvió el problema (también intenté aumentarlo). Sin embargo, la función de cierre funciona bien. El único problema ahora es que el tercer archivo se abre solo sin unirse a la última tabla unida. He estado probando diferentes métodos desde ayer, pero no funciona.
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaEl código está diseñado para abrir la primera tabla de datos, luego abrir la segunda tabla, crear una nueva tabla de datos unida, cerrar la tabla original y la tabla recién abierta, manteniendo la tabla recién unida.Luego abre la tercera mesa. Únalo a la tabla previamente unida, creando una nueva tabla de datos.A continuación, cierre la tabla unida anterior y la tabla recién abierta, conservando la última tabla unida... etc.
Puede haber un problema de tiempo y hay un problema de que eliminó una de las funciones de cierre.Por favor cambie al siguiente código:
Si ( F == 1 ,
dt = dttemp ,
dtx = dt << Unirse ( Con ( dttemp ) , Por columnas coincidentes ( nombre = nombre ) , Conservar el orden de la mesa principal () , Nombre de la tabla de salida ( "Reloj H concatenado" ) ) ;
esperar (1);
Cerca ( dttemp , no guardar ) ;
cerrar (dt,nosave);
dt = dtx ;
) ;
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaHola Jim,
Gracias por la ayuda, lo descubrí después de varios intentos. Debería haber respondido ese hilo. El siguiente fue el código que usé. El problema que tengo ahora es que no puedo juntar más de 2 mesas juntas. Cada vez que trato de unir 3 tablas, muestra 2 tablas concatenadas diferentes en lugar de una. El primero muestra la tabla de datos concatenados 1 y 2 y el segundo muestra la tabla de datos concatenados 1 y 3.
Sin una tabla de datos concatenados, es muy difícil usar la copiadora de columnas. Entonces, en cambio, estaba pensando, ¿es posible usar la copiadora de columnas para que muestre todas las columnas de varias tablas de datos?
Nombres predeterminados hasta aquí ( 1 ) ;
// Use 'PickFile()' para obtener una lista de archivos para abrir (solo Windows)
lista de archivos = Seleccionar archivo (
"Seleccione uno de más archivos" , // Inmediato
"$ESCRITORIO" , // Carpeta inicial
{ "Archivos JMP|jmp;jsl;jrn;csv" , "Todos los archivos|*" } , // Lista de filtros de archivos para aplicar (ignorado por OS/X)
1 , // Filtro de archivo inicial a aplicar (índice de elemento en la lista anterior)
0 , // Indicador de guardar: especifique una ventana 'Guardar' o 'Abrir'. Establezca un valor de 1 o 0 respectivamente.
Vacío () , // archivo predeterminado
múltiple // Múltiple: permite abrir más de un archivo (OS/X lo ignora)
) ;
// Si solo se selecciona un archivo, la lista de archivos 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 sus nombres de tabla JMP correspondientes
nombres de tablas = {} ;
Para ( F = 1 , F <= N artículos ( lista de archivos ) , F ++,
dttemp = Abierto ( lista de archivos [ F ] ) ;
Insertar en ( nombres de tablas , dttemp << obtenerNombre ) ;
// Agrega las tablas de datos juntas
Si ( F == 1 ,
dt = dttemp ,
dtx = dt << Unirse ( Con ( dttemp ) , Por número de fila , Por columnas coincidentes ( nombre = nombre ) , Conservar el orden de la mesa principal () , Nombre de la tabla de salida ( "Reloj H concatenado" ) ) ;
Cerca ( dttemp , no guardar ) ;
dt = dtx ;
) ;
) ;
dt = Tabla de datos actual () ;
//Crear Column Copier para copiar archivos
col_dlg = Nueva ventana ( "Copiadora de columna" ,
caja de paneles ( "Seleccione cuatro columnas para crear una nueva tabla con:" ,
col_clist = Cuadro de lista de columnas ( todo , ancho ( 200 ) , máximo seleccionado ( 4 ) ) ,
) ,
Caja de botones ( "DE ACUERDO" ,
lista_columna_seleccionada = col_clist << se selecciona ;
col1 = lista_columna_seleccionada [ 1 ] ;
col2 = lista_columna_seleccionada [ 2 ] ;
col3 = lista_columna_seleccionada [ 3 ] ;
col4 = lista_columna_seleccionada [ 4 ] ;
// Crea una nueva tabla usando solo las dos columnas seleccionadas
dt2 = dt << Subconjunto ( columnas ( Columna ( dt , col1 ) , Columna ( dt , col2 ) , Columna ( dt , col3 ) , Columna ( dt , col4 ) ) ) ;
col_dlg << Cerrar ventana ;
)
) ;
Re: Cuadro de diálogo Columna: también copia las propiedades de la columnaEn el último planteamiento de esta pregunta, indicó que no deseaba concatenar las tablas, sino unirlas horizontalmente.A continuación se muestra una revisión del script que le envié anteriormente, pero esta vez las tablas se unen horizontalmente.
Nombres predeterminados hasta aquí ( 1 ) ;
// Use 'PickFile()' para obtener una lista de archivos para abrir (solo Windows)
lista de archivos = Seleccionar archivo (
"Seleccione uno de más archivos" , // Inmediato
"$ESCRITORIO" , // Carpeta inicial
{ "JMP
Archivos|jmp;jsl;jrn;csv" , "Todos los archivos|*" } , // Lista de filtros de archivos para aplicar (ignorado por OS/X)
1 , // Filtro de archivo inicial a aplicar (índice de 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: permite abrir más de un archivo (ignorado por OS/X)
) ;
// Si solo se selecciona un archivo, la lista de archivos 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 sus nombres de tabla JMP correspondientes
nombres de tablas = {} ;
Para ( f = 1 , F <= N artículos (lista de archivos) , F ++,
dttemp = Abierto ( lista de archivos);
Insertar en ( nombres de tabla , dtemp << obtenerNombre ) ;
// Agrega las tablas de datos juntas
Si ( f == 1 ,
dt = dttemp ,
dtx = dt << Unirse (Con(dttemp) , por número de fila) ;
Cerca ( dttemp , no guardar) ;
dt = dtx ;
Cerca (dtx , no guardar) ;
) ;
) ;
//Crear Column Copier para copiar archivos
col_dlg = Nueva ventana ( "Copiadora de columna" ,
caja de paneles ( "Selecciona cuatro
columnas para crear una nueva tabla con:" , col_clist = Cuadro de lista de columnas ( todo , ancho( 200 ) , máximo seleccionado ( 4 ) ) , ) ,
Caja de botones ( "DE ACUERDO" ,
lista_columna_seleccionada = col_clist << se selecciona;
col1 = lista_columna_seleccionada[ 1 ] ;
col2 = lista_columna_seleccionada[ 2 ] ;
col3 = lista_columna_seleccionada[ 3 ] ;
col4 = lista_columna_seleccionada[ 4 ] ;
// Crea una nueva tabla usando solo las dos columnas seleccionadas
dt2 = dt << Subconjunto (columnas( Columna ( dt , columna1) , Columna ( dt , col2) , Columna ( dt , col3) , Columna ( dt , columna4 ) ) ) ;
col_dlg << Cerrar ventana;
)
) ;