Finestra di dialogo Colonna: copia anche le proprietà della colonna<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho uno script che apre più tabelle di dati e crea nuove colonne in quelle tabelle di dati. È possibile creare uno script di una casella di copia delle colonne che mostri tutte le colonne di ogni tabella di dati aperta? quindi posso selezionare e copiare le uniche colonne che voglio con le loro proprietà?
Il mio codice attuale tenta di concatenare le tabelle di dati in una nuova tabella prima di copiare le colonne, ma sembra JMP non mi permetteva di concatenare più di due tabelle di dati contemporaneamente.
Di seguito è riportato un riepilogo del codice che ho scritto per semplificare la modifica. Grazie.
I nomi predefiniti sono qui ( 1 ) ;
// Usa 'PickFile()' per ottenere un elenco di file da aprire (solo Windows)
fileList = Scegli File (
"Seleziona uno o più file" , // Richiesta
"$SCRIVANIA" , // Cartella iniziale
{ "File JMP|jmp;jsl;jrn;csv" , "Tutti i file|*" } , // Elenco dei filtri di file da applicare (ignorati da OS/X)
1 , // Filtro file iniziale da applicare (indice dell'elemento nell'elenco precedente)
0 , // Save flag - Specifica una finestra 'Salva' o 'Apri'. Impostare un valore di 1 o 0 rispettivamente.
Vuoto () , // File predefinito
multiplo // Multiple - Se 'Save Flag' = 0, l'utilizzo di un valore pari a 1 consente l'apertura di più di un file (ignorato da OS/X)
) ;
// Se viene selezionato un solo file, fileList non sarà un elenco, quindi dobbiamo crearlo da soli
Se ( ! È la lista ( fileList ) ,
fileList = Elenco di valutazione ( { fileList } )
) ;
// Apre i file e memorizza i nomi delle tabelle JMP corrispondenti
tableNames = {} ;
Per ( F = 1 , F <= N articoli ( fileList ) , F ++,
dt = Aprire ( fileList [ F ] ) ;
Inserire ( tableNames , dt << getNome ) ;
) ;
dt = Nuova Tavola ( "Cane concatenato H" ) ;
// Crea una copiatrice di colonne per copiare i file
dt = Tabella dei dati correnti () ;
col_dlg = nuova finestra ( "Copiatrice di colonne" ,
pannello ( "Seleziona quattro colonne per creare una nuova tabella con:" ,
col_clist = collistbox ( Tutto , larghezza ( 200 ) , massimo selezionato ( 4 )) ,
) ,
pulsantiera ( "OK" ,
select_column_list = col_clist << essere selezionato ;
col1 = select_column_list [ 1 ] ;
col2 = select_column_list [ 2 ] ;
col3 = select_column_list [ 3 ] ;
col4 = select_column_list [ 4 ] ;
// Crea una nuova tabella utilizzando solo le due colonne selezionate
dt2 = dt << Sottoinsieme ( colonne ( colonna ( dt , col1 ) , colonna ( dt , col2 ) , colonna ( dt , col3 ) , colonna ( dt , col4 ) ) ) ;
col_dlg << chiudi la finestra ;
)
) ;
Aggiunta tabella dati.
Il messaggio è stato modificato da: Luqman Olawin
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaCiao Jim,
Ho provato a sostituirlo con "nome". Ho commentato la funzione "Corrispondendo alla colonna" e sembra funzionare per me. Grazie mille per l'aiuto, lo apprezzo davvero!
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaL'errore indica che non esiste una colonna denominata "Wafer ID in Lot ID".Questa è la colonna corrispondente nelle mie tabelle di dati.Credo che il nome della colonna su cui stai confrontando sia chiamato "nome".Cambia i 2 riferimenti a "Wafer ID in Lot ID" in "name"
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaDi seguito è riportato l'errore che ottengo dalla finestra di registro. Ho modificato il post per allegare le tabelle di dati e hanno tutte le stesse colonne con solo nomi di tabelle diversi.Vorrei mantieni separate le colonne con lo stesso nome in modo che quando viene visualizzata la copiatrice di colonne, posso selezionare le colonne che mi piace copiare. Grazie.
L'accesso alla tabella dati con ambito richiede una colonna o una variabile della tabella dati nell'accesso o nella valutazione di 'dt:Wafer ID in lot ID', dt:Wafer ID in lot ID/*###*/
Nello script seguente, errore contrassegnato da /*###*/
Nomi Predefinito A Qui( 1 );
fileList = Seleziona file(
"Seleziona uno o più file",
"$SCRIVANIA",
{"File JMP|jmp;jsl;jrn;csv", "Tutti i file|*"},
1,
0,
Vuoto(),
multiplo
);
If( !Is List( fileList ),
fileList = Eval List( {fileList} )
);
tableNames = {};
For( f = 1, f <= N elementi( fileList ), f++,
dttemp = Open( elencofile);
Insert Into( tableNames, dttemp << getName );
Se( f == 1,
dt = dttemp,
dtx = dt << Unisci(
Con( dttemp ),
Corrispondendo alle colonne(
dt:ID wafer nell'ID lotto/*####*/ = dttemp:ID wafer nell'ID lotto
),
Mantieni ordine tabella principale(),
Nome tabella di output ("Concatenated Watch H")
);
Chiudi( dttemp, nosave );
Chiudi( dt, nosave );
dt = dtx;
);
);
dt = Tabella dati corrente();
col_dlg = Nuova finestra( "Copia colonne",
Panel Box( "Seleziona quattro colonne per creare una nuova tabella con:",
col_clist = Col List Box( tutto, larghezza( 200 ), massimo selezionato( 4 ) )
),
Casella dei pulsanti ("OK",
selected_column_list = col_clist << getselected;
col1 = select_column_list[1];
col2 = select_column_list[2];
col3 = select_column_list[3];
col4 = select_column_list[4];
dt2 = dt << Sottoinsieme(
colonne(
Colonna( dt, col1 ),
Colonna( dt, col2 ),
Colonna( dt, col3 ),
Colonna( dt, col4 )
)
);
col_dlg << chiudi finestra;
)
);
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaParlami dei diversi file. Hanno colonne che hanno gli stessi nomi? Tutte le colonne con lo stesso nome verranno collassate l'una sull'altra nel join, utilizzando l'istruzione "unisci colonne con lo stesso nome(1)".Se stai contando sul join mantenendo separate le colonne con lo stesso nome, la sezione di codice che esegue l'unione dovrà riconoscere che la colonna chiamata "nome" nella tabella dati unita non sarà più denominata "nome", ma piuttosto "nome di " e che dovrà essere gestita nello script per consentire l'unione.
La colonna "nome" nelle tabelle di dati è un identificatore univoco per ogni riga?
Potete dirmi quali messaggi di errore vengono visualizzati nel registro di JMP (Visualizza==>Registro)?
Ecco il codice che funziona senza errori sul mio sistema.Tieni presente che la directory che sto aprendo per trovare i file di input e anche la colonna utilizzata per la corrispondenza nell'unione è diversa dal tuo codice.A parte questo, dovrebbe essere lo stesso codice.Questo codice funziona senza errori. Si prega di notare che il presupposto per il funzionamento di questo codice è che, ad eccezione della colonna utilizzata per la corrispondenza (" ID wafer nell'ID lotto").
I nomi predefiniti sono qui ( 1 ) ;
fileList = Scegli File (
"Seleziona uno o più file" , // Richiesta
"c:\utenti\txjim\documenti\multifile" , // Cartella iniziale
{ "File JMP|jmp;jsl;jrn;csv" , "Tutti i file|*" } , // Elenco dei filtri di file da applicare (ignorati da OS/X)
1 , // Filtro file iniziale da applicare (indice dell'elemento nell'elenco precedente)
0 , // Save flag - Specifica una finestra 'Salva' o 'Apri'. Impostare un valore di 1 o 0 rispettivamente.
Vuoto () , // File predefinito
multiplo // Multiple - consente l'apertura di più di un file (ignorato da OS/X)
) ;
Se ( ! È la lista ( elenco file ) ,
fileList = Elenco di valutazione ({elencofile})
) ;
tableNames = {} ;
Per ( F = 1 , F <= N articoli ( elenco file ) , F ++,
dttemp = Aprire (fileLista);
Inserire ( tableNames , dttemp << getNome ) ;
Se ( F == 1 ,
dt = dttemp ,
dtx = dt << Giuntura (
Con( dttemp ) ,
Corrispondendo alle colonne ( dt : Nome ( "ID wafer nell'ID lotto" ) = dttemp : nome ( "ID wafer nell'ID lotto" ) ) ,
Mantieni ordine tabella principale() ,
unisci colonne con lo stesso nome( 1 ) ,
Nome tabella di output( "Orologio concatenato H" )
) ;
Vicino (dtemp , nosalva) ;
Vicino (dt , nosalva) ;
dt = dtx ;
) ;
) ;
dt = Tabella dei dati correnti () ;
col_dlg = Nuova finestra ( "Copiatrice di colonne" ,
Scatola del pannello ( "Seleziona quattro colonne per creare una nuova tabella con:" , col_clist = Casella di riepilogo Col ( Tutto , larghezza( 200 ) , massimo selezionato( 4 ) ) , ) ,
Scatola dei bottoni ( "OK" ,
select_column_list = col_clist << essere selezionato;
col1 = elenco_colonne_selezionate[ 1 ] ;
col2 = elenco_colonne_selezionate[ 2 ] ;
col3 = elenco_colonne_selezionate[ 3 ] ;
col4 = elenco_colonne_selezionate[ 4 ] ;
dt2 = dt << Sottoinsieme (colonne( Colonna (dt , col1 ) , Colonna (dt , col2 ) , Colonna (dt , col3 ) , Colonna (dt , col4 ) ) ) ;
col_dlg << chiudi la finestra;
) ;
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaNon funziona neanche. Il cambiamento non si unisce nemmeno ai tavoli.
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaIl problema è che JMP rinomina le colonne quando unisce le tabelle, quando le tabelle hanno colonne con lo stesso nome.Pertanto, la tua colonna chiamata "nome" veniva modificata dopo il primo join.Quindi cambia la riga:
dtx = dt << Giuntura ( Con ( dttemp ) , Per colonne corrispondenti ( nome = nome ) , Mantieni l'ordine della tabella principale () , Nome della tabella di output ( "Orologio concatenato H" ) ) ;
A
dtx = dt << Giuntura ( Con ( dttemp ) , Per colonne corrispondenti ( nome = nome ) , Mantieni l'ordine della tabella principale () , Nome della tabella di output ( "Orologio concatenato H" ), unisci colonne con lo stesso nome(1) ) ;
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaGrazie Jim. I tempi non hanno risolto il problema (ho anche provato ad aumentarlo). Tuttavia, la funzione di chiusura funziona bene. L'unico problema ora è che il terzo file si apre da solo senza unirsi all'ultima tabella unita. Ho provato diversi metodi da ieri ma non funziona.
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaIl codice ha lo scopo di aprire la prima tabella dati, quindi aprire la seconda tabella, creare una nuova tabella dati unita, chiudere la tabella originale e la tabella appena aperta, mantenendo la tabella appena unita.Quindi apri il terzo tavolo. Uniscilo alla tabella unita in precedenza, creando una nuova tabella dati.Quindi chiudi la vecchia tabella unita e la tabella appena aperta, mantenendo l'ultima tabella unita ..... ecc.
Potrebbe esserci un problema di temporizzazione e c'è un problema che hai rimosso una delle funzioni di chiusura.Si prega di passare al seguente codice:
Se ( F == 1 ,
dt = dttemp ,
dtx = dt << Giuntura ( Con ( dttemp ) , Per colonne corrispondenti ( nome = nome ) , Mantieni l'ordine della tabella principale () , Nome della tabella di output ( "Orologio concatenato H" ) ) ;
aspetta(1);
Vicino ( dttemp , nosave ) ;
chiudere (dt,nosave);
dt = dtx ;
) ;
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaCiao Jim,
Grazie per l'aiuto, l'ho capito dopo diversi tentativi. Avrei dovuto rispondere a quel thread. Quello che segue è il codice che ho usato. Il problema che ho ora è che non posso unire più di 2 tavoli insieme. Ogni volta che provo a unirmi a 3 tavoli, vengono visualizzati 2 diversi tavoli concatenati invece di uno. Il primo mostra la tabella di dati concatenati 1 e 2 e il secondo mostra la tabella di dati concatenati 1 e 3.
Senza una tabella dati concatenata, è molto difficile utilizzare la copiatrice di colonne. Quindi stavo pensando invece, è possibile utilizzare la copiatrice di colonne in modo che mostri tutte le colonne da più tabelle di dati?
I nomi predefiniti sono qui ( 1 ) ;
// Usa 'PickFile()' per ottenere un elenco di file da aprire (solo Windows)
fileList = Scegli File (
"Seleziona uno o più file" , // Richiesta
"$SCRIVANIA" , // Cartella iniziale
{ "File JMP|jmp;jsl;jrn;csv" , "Tutti i file|*" } , // Elenco dei filtri di file da applicare (ignorati da OS/X)
1 , // Filtro file iniziale da applicare (indice dell'elemento nell'elenco precedente)
0 , // Save flag - Specifica una finestra 'Salva' o 'Apri'. Impostare un valore di 1 o 0 rispettivamente.
Vuoto () , // File predefinito
multiplo // Multiple - consente l'apertura di più di un file (ignorato da OS/X)
) ;
// Se viene selezionato un solo file, fileList non sarà un elenco, quindi dobbiamo crearlo da soli
Se ( ! È la lista ( fileList ) ,
fileList = Elenco di valutazione ( { fileList } )
) ;
// Apre i file e memorizza i nomi delle tabelle JMP corrispondenti
tableNames = {} ;
Per ( F = 1 , F <= N articoli ( fileList ) , F ++,
dttemp = Aprire ( fileList [ F ] ) ;
Inserire ( tableNames , dttemp << getNome ) ;
// Accoda insieme le tabelle di dati
Se ( F == 1 ,
dt = dttemp ,
dtx = dt << Giuntura ( Con ( dttemp ) , Per numero di riga , Per colonne corrispondenti ( nome = nome ) , Mantieni l'ordine della tabella principale () , Nome della tabella di output ( "Orologio concatenato H" ) ) ;
Vicino ( dttemp , nosave ) ;
dt = dtx ;
) ;
) ;
dt = Tabella dei dati correnti () ;
// Crea una copiatrice di colonne per copiare i file
col_dlg = Nuova finestra ( "Copiatrice di colonne" ,
Scatola del pannello ( "Seleziona quattro colonne per creare una nuova tabella con:" ,
col_clist = Casella di riepilogo Col ( Tutto , larghezza ( 200 ) , massimo selezionato ( 4 ) ) ,
) ,
Scatola dei bottoni ( "OK" ,
select_column_list = col_clist << essere selezionato ;
col1 = select_column_list [ 1 ] ;
col2 = select_column_list [ 2 ] ;
col3 = select_column_list [ 3 ] ;
col4 = select_column_list [ 4 ] ;
// Crea una nuova tabella utilizzando solo le due colonne selezionate
dt2 = dt << Sottoinsieme ( colonne ( Colonna ( dt , col1 ) , Colonna ( dt , col2 ) , Colonna ( dt , col3 ) , Colonna ( dt , col4 ) ) ) ;
col_dlg << chiudi la finestra ;
)
) ;
Oggetto: Finestra di dialogo Colonna: copia anche le proprietà della colonnaNell'ultima posa di questa domanda, hai indicato che non volevi concatenare le tabelle insieme, ma volevi unirle orizzontalmente.Di seguito è una rielaborazione dello script che ti ho inviato in precedenza, ma questa volta ha le tabelle unite orizzontalmente.
I nomi predefiniti sono qui ( 1 ) ;
// Usa 'PickFile()' per ottenere un elenco di file da aprire (solo Windows)
fileList = Scegli File (
"Seleziona uno o più file" , // Richiesta
"$SCRIVANIA" , // Cartella iniziale
{ "JMP
File|jmp;jsl;jrn;csv" , "Tutti i file|*" } , // Elenco dei filtri di file da applicare (ignorati da OS/X)
1 , // Filtro file iniziale da applicare (indice dell'elemento nell'elenco precedente)
0 , // Flag di salvataggio: specifica una finestra "Salva" o "Apri". Impostare un valore di 1 o 0 rispettivamente.
Vuoto () , // File predefinito
multiplo // Multiple - consente di aprire più di un file (ignorato da OS/X)
) ;
// Se viene selezionato un solo file, fileList non sarà un elenco, quindi dobbiamo crearlo da soli
Se ( ! È la lista ( elenco file ) ,
fileList = Elenco di valutazione ({elencofile})
) ;
// Apre i file e memorizza i nomi delle tabelle JMP corrispondenti
tableNames = {} ;
Per ( F = 1 , F <= N articoli ( elenco file ) , F ++,
dttemp = Aprire (fileLista);
Inserire ( tableNames , temp << getNome ) ;
// Accoda insieme le tabelle di dati
Se ( F == 1 ,
dt = dttemp ,
dtx = dt << Giuntura (Con( dttemp ) , Per numero di riga) ;
Vicino (dtemp , nosalva) ;
dt = dtx ;
Vicino (dtx , nosalva) ;
) ;
) ;
// Crea una copiatrice di colonne per copiare i file
col_dlg = Nuova finestra ( "Copiatrice di colonne" ,
Scatola del pannello ( "Seleziona quattro
colonne per creare una nuova tabella con:" , col_clist = Casella di riepilogo Col ( Tutto , larghezza( 200 ) , massimo selezionato( 4 ) ) , ) ,
Scatola dei bottoni ( "OK" ,
select_column_list = col_clist << essere selezionato;
col1 = elenco_colonne_selezionate[ 1 ] ;
col2 = elenco_colonne_selezionate[ 2 ] ;
col3 = elenco_colonne_selezionate[ 3 ] ;
col4 = elenco_colonne_selezionate[ 4 ] ;
// Crea una nuova tabella utilizzando solo le due colonne selezionate
dt2 = dt << Sottoinsieme (colonne( Colonna (dt , col1 ) , Colonna (dt , col2 ) , Colonna (dt , col3 ) , Colonna (dt , col4 ) ) ) ;
col_dlg << chiudi la finestra;
)
) ;