Copia di colonne, nomi di colonne e nome della tabella in una nuova tabella<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ciao,
Ho qualche problema a copiare colonne da più tabelle di dati in una nuova tabella vuota. Le tabelle di dati da aprire hanno tutte gli stessi nomi di colonna.
Finora, posso aprire più tabelle ma posso solo copiare le colonne da una delle ultime tabelle di dati aperte.
Ecco il mio codice qui sotto:
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 ++,
dt = Aprire ( fileList [ F ] ) ;
Inserire ( tableNames , dt << getNome ) ;
) ;
// Crea una copiatrice di colonne per copiare i file
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 ;
)
) ;
Nota: la nuova tabella di dati che viene creata è un sottoinsieme dell'ultima tabella di dati aperta dai dati multipli t capace. Vorrei poter scegliere qualsiasi copia qualsiasi colonna da una qualsiasi delle tabelle di dati in quella nuova. Grazie.
Oggetto: copiare colonne, nomi di colonne e nome della tabella in una nuova tabellaGrazie mille, ha funzionato. Ho pensato che fosse quello il problema, solo un ultimo aiuto. La concatenazione era verticale. Sto provando a concatenare orizzontalmente la tabella dei dati. Quindi ho usato "Unisci" invece di "concatena" ma apre 2 tabelle di dati separate invece di combinarle insieme.
Oggetto: copiare colonne, nomi di colonne e nome della tabella in una nuova tabellaL'errore .... che era il mio errore .... è nella riga
Insert Into( tableNames, dt << getName );
La riga dovrebbe essere:
Insert into( tableNames, dttemp << getName );
Oggetto: copiare colonne, nomi di colonne e nome della tabella in una nuova tabellaHo controllato la tabella dei dati ma ne apre ancora solo una. Ecco l'errore che ho ricevuto dal registro seguente:
Nome irrisolto: dt in accesso o valutazione di 'dt' , dt/*####*/
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);
Inserisci in( tableNames, dt/*###*/ <
Se( f == 1,
dt = dttemp,
dt << concatena( dttemp, aggiungi alla prima tabella( 1 ) );
Chiudi( dttemp, nosave );
);
);
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: copiare colonne, nomi di colonne e nome della tabella in una nuova tabellaHo modificato il codice, per leggere in ciascuno dei 4 file e per aggiungerli al primo file.Pertanto, il risultato finale dovrebbe essere che si dispone di un solo file, ma contiene tutti i dati di ciascuno dei file.
Non ho potuto testare completamente il tuo codice, quindi potrebbe esserci un piccolo problema.L'unico codice che ho modificato era nel ciclo For.Si prega di eseguire nuovamente il codice, quindi guardare nel registro View==>Log e vedere qual è l'errore.Inoltre, controlla la tabella dei dati e verifica che tutti i dati siano stati inseriti nella tabella dei dati.
Oggetto: copiare colonne, nomi di colonne e nome della tabella in una nuova tabellaCiao Jim,
Grazie per l'aiuto ma continua a non funzionare. Quando eseguo il nuovo codice questa volta, la copiatrice della colonna non viene visualizzata e viene visualizzato l'unico dei file che voglio aprire.
Oggetto: copiare colonne, nomi di colonne e nome della tabella in una nuova tabellaIl codice seguente legge ogni file e quindi li concatena insieme in una tabella di dati, che viene quindi elaborata dalla copiatrice di colonne
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 ( 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 , dt << getNome ) ;
// Accoda insieme le tabelle di dati
Se ( F == 1 ,
dt = dttemp ,
dt << concatenare (dtemp , aggiungi alla prima tabella( 1 ) ) ;
Vicino (dtemp , 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;
)
) ;