Apri più file e quindi rinomina le colonne in tutte le tabelleHo uno script che offre all'utente la possibilità di selezionare più file dello stesso tipo, aprirli e quindi rinominare le colonne. La selezione e l'apertura dei file funziona correttamente, ma rinominare le colonne è stato un problema. Di seguito è riportato ciò che ho finora.
Names Default To Here( 1 );
Files = Pick File(
"Select File(s)",
"C:\Users\dkraeuter\Desktop\Temp\Test",
{"All Files|*"},
1,
0,
"",
"multiple"
);
y = {"Test", "Run", "Model"};
For( i = 1, i <= N Items( Files ), i++,
Try( Open( Files[i], "text" ) );
dt = Current Data Table() // Use Current Data Table;
For( n = 1, n < 56, n++,
:Column( n ) << Set Name( y[n] )
);
);
Re: aprire più file e quindi rinominare le colonne in tutte le tabelleRicevi qualche errore nel log?
Re: aprire più file e quindi rinominare le colonne in tutte le tabelleCiao Jim, potresti per favore aiutarmi con quanto segue:
Cosa succede se ho 2 tabelle di dati che sto importando e voglio cambiare il nome delle colonne in entrambe... la sezione dello script seguente non funzionerà? Così com'è, cambia solo il nome delle colonne in una tabella ma non nell'altra.
dt1 = Tabella dati(1);
dt1 << seleziona dove( :Risultato_Valido != 1 );
dt1 << nascondi ed escludi;
dt1 << seleziona escluso;
dt1 << cancella righe;
dt1 << imposta nome ("Dati 2");
dt1 << Elimina colonne("Numero parte", "ID univoco");
dt1 << Testo in colonne(delimitatore( "_" ),colonne( :Nome file),);
dt1 = :Nome file 1 << imposta nome ("Run Time");
dt1 = :Nome file 2 << imposta nome ("Dimensione");
dt1 = :Nome file 3 << imposta nome ("Tipo dati");
dt2 = Tabella dati(2);
dt2 << seleziona dove( :Risultato_Valido != 1 );
dt2 << nascondi ed escludi;
dt2 << seleziona escluso;
dt2 << cancella righe;
dt2 << imposta nome ("Dati 1");
dt2 << Elimina colonne("Numero parte", "ID univoco");
dt2 << Testo in colonne(delimitatore( "_" ),colonne( :Nome file),);
dt2 = :Nome file 1 << imposta nome ("Run Time");
dt2 = :Nome File 2 << imposta nome ("Dimensione");
dt2 = :Nome file 3 << imposta nome ("Tipo dati");
Re: aprire più file e quindi rinominare le colonne in tutte le tabelleLa tua lista Y contiene solo 49 elementi e stai tentando di arrivare a 56.L'altra possibilità è che la tabella di 50 dati che stai leggendo contenga > 49 colonne per la prima volta.Dovresti verificarlo nel codice e scorrere solo 49 colonne o, se la tabella dati ha meno colonne, eseguire il ciclo solo 1 attraverso il numero di colonne.
Re: aprire più file e quindi rinominare le colonne in tutte le tabelleSto utilizzando lo script e ho riscontrato un problema. Quando il valore di "n" supera 50, apre semplicemente un file e rinomina le colonne, indipendentemente dal numero di file selezionati. L'errore che ricevo nel registro è: Subscript Range in accesso o valutazione di 'y[n]' , y[/*###*/n].
Ecco il mio script attuale.
Names Default To Here( 1 );
Files = Pick File(
"Select File(s)",
"C:\Users\dkraeuter\Desktop\Temp\Azure",
{"All Files|*"},
1,
0,
"",
"multiple"
);
y = {"Blank", "Feed Step 2", "Cycle Stopped", "Spindle Speed 1", "Spindle Speed 2", "Number of Stones",
"Percent of Surface Interuptions", "Honing Time ", "Tool Type", "Fault Code", "Serial Number", "Feed Force 1",
"Feed Force 2", "Bore Compensation", "Feed Position at Bore", "Feed Position at End", "Feed Position at Target",
"Wedge Angle", "Part Count", "Setup Name", "Part Material", "Part Hardness", "Stone Type", "Stone Length",
"Stone Width", "Coolant Type", "Cycle Run Status", "Cycle Stone Condition", "Cycle Incoming Condition",
"Machine Model", "Stroke Speed 1", "Stroke Speed 2", "Feed Rate 1", "Feed Rate 2", "Stroke Length", "Bore Length",
"VSRR Calc", "Average Torq Spindle", "Average Torq Stroker", "Average Torque Feed", "Average Feed Force",
"Average Part Torque", "Target Final Diameter", "Surface Finish Ra", "Surface Finish Rz", "Surface Finish Rt",
"1", "2", "3"};
For( i = 1, i <= N Items( Files ), i++,
Try( dt = Open( Files[i], "text" ) );
Wait( 0 );
For( n = 1, n < 56, n++,
Column( dt, n ) << Set Name( y[n] )
);
);Re: aprire più file e quindi rinominare le colonne in tutte le tabelleGli errori che ho riscontrato sono stati i seguenti
1. Impossibile trovare il percorso della directory predefinita.Quindi l'ho corretto in modo che puntasse a una cartella che sapevo di avere, e quindi il Pick File ha funzionato bene
2. Mancava un ";" alla fine dell'istruzione "y =".Una volta risolto il problema, il codice è stato analizzato correttamente.
3. La funzione Column() non è come la funzione :Name().Non c'è un ":" all'inizio.
4. Ho anche eliminato "dt = current data table():".Ponendolo come risultato della funzione Open(), la sua impostazione non è più necessaria.
5. Ho anche aggiunto nella tabella dati il riferimento alla funzione Column().È il modo più formale per specificare la funzione Column() ed evita qualsiasi domanda su quale colonna punta.
6. L'attesa( 0 ); è solo una precauzione di sicurezza.Assicura che la tabella dati sia stata completamente letta prima dell'esecuzione del ciclo For().Potresti anche voler utilizzare
dt << run formulas;
Assicurerà inoltre che la tabella dati sia stata eseguita.
Ecco la mia versione del tuo codice:
Names Default To Here( 1 );
Files = Pick File( "Select File(s)", "C:\Users\<YOUR logonid="">", {"All Files|*"}, 1, 0, "", "multiple" );
y = {"Test", "Run", "Model"};
For( i = 1, i <= N Items( Files ), i++,
Try( dt = Open( Files[i], "text" ) );
wait( 0 );
For( n = 1, n < 56, n++,
Column( dt, n ) << Set Name( y[n] )
);
);</YOUR>
Re: aprire più file e quindi rinominare le colonne in tutte le tabelleIl mio errore dice qualcosa su un ";" non riconosciuto O ")". Per quanto ne so, ha qualcosa a che fare con il comando open subito dopo il ciclo For. Quando commento il comando Apri, il secondo ciclo for sembra essere a posto.
Il 55 deriva dal numero effettivo di colonne che sto rinominando. Quando ho ripubblicato ho modificato il numero totale di nomi di colonna elencati, ma ho dimenticato di modificare il conteggio totale di "n" consentito.
Re: aprire più file e quindi rinominare le colonne in tutte le tabelleChe messaggio di errore ricevi nel log?La mia ipotesi è che stia affermando che il tuo pedice è fuori range.Stai eseguendo il loop della variabile "n" da 1 a 55 e facendo riferimento alla variabile "y".Non appena 'n' è uguale a 4, hai esaurito i valori nella tua lista 'y'.