Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencosto provando a
1) Aprire una serie di file elencati nell'elenco Unique_Files
2) Se il file non esiste, si apre una finestra di dialogo con un messaggio che indica che il file esiste
3) Se il file esiste, aprirlo in JMP
4) Se il file esiste, aggiungere il nome di riferimento della tabella dati all'elenco UniqueTables
Ogni altra parte del mio script sembra funzionare tranne la possibilità di creare un elenco del nome di riferimento della tabella dati.Il modo in cui è scritto il mio script di seguito risulta nell'elenco
Tabelle univoche = { Tabella dati ("nome file1"), Tabella dati ("nome file2"),....}
Invece voglio che lo script risulti nell'elenco come
Tabelle univoche = Mia_Tabella_1, Mia_Tabella_2, Mia_Tabella_3,...
Grazie in anticipo.
N Items (Unique_Files);
UniqueTables = { };
For ( i = 1, i <= N, i ++,
If(
File Exists( "C:\PretendFilePath\" ||Unique_Files[i]|| ".csv"),
Eval(
Substitute(
Expr(
MyTab = Open( "C:\PretendFilePath\" ||Unique_Files[i]|| ".csv");
Insert Into( UniqueTables, MyTab)
),
Expr( MyTab),
Parse( My_Table_" ||Char(i))
)
),
New Window ("File Not Found",
<< Modal,
V List Box(
Text Box( Unique_Files[i]|| " does not exist in folder."),
Button Box( "OK")
)
)
)
);Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoSì
Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoQuel periodo era difficile da vedere!!!!
Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoIn qualche modo un punto "." finito dopo
Show( UniqueTables );.
quindi rimuovilo e funzionerà bene.....correggerò l'esempio precedente per riferimenti futuri.
Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoNell'ultima riga ricevo il seguente errore:
"UniqueTables" imprevisti. Forse manca un ";" O ",".
Riga 42 Colonna 1: ►UniqueTables[1] << Concatenate( UniqueTables[2] );
Il testo rimanente che è stato ignorato è stato
TabelleUnique[1]<Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elenco
Sembra che tu abbia una certa mancanza di conoscenza su ciò che le varie strutture ti stanno effettivamente dando.Ti consiglio vivamente di dedicare del tempo alla lettura della Guida allo scripting.Ma penso anche che quanto segue potrebbe risolvere alcuni problemi con il tuo codice attuale.Dai un'occhiata al mio codice annotato qui sotto e vedi se aggiunge un po' di luce ai problemi che stai riscontrando.
names default to here(1);
dt1=open("$SAMPLE_DATA/big class.jmp");
dt2=open("$SAMPLE_DATA/big class families.jmp");
// Here is what the value of dt1 is
show(dt1);
// From the log
// dt1 = DataTable("big class");
// Therefore the value of dt2 is,
show(dt2);
// dt2 = DataTable("big class families");
// The structure of the Concatenate Platform syntax is:
// data table("data table name") << Concatenate( data table("data table2 name"), data table("data table2 name") );
// That would mean that the following will concatenate our two files
data table( "big class" ) << Concatenate( data table( "big class families" ) );
// It also means, that since we have variables dt1, which was shown to equal Data Table( "big class" ), and
// dt2 which has the value of Data Table( "big class families" )
// the above concatenate statement can be written
dt1 << Concatenate( dt2 );
// Here is another way to do this
UniqueTables = {};
MyTab = open("$SAMPLE_DATA/big class.jmp");
insert into( UniqueTables, MyTab );
MyTab = open("$SAMPLE_DATA/big class families.jmp");
insert into( UniqueTables, MyTab );
Show( UniqueTables );
// returns
// UniqueTables = {DataTable("big class"), DataTable("big class families")};
// So now the Concatenate statement can be written
UniqueTables[1] << Concatenate( UniqueTables[2] );Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoScopri cosa Problema XY è, ci aiuterà sicuramente ad aiutarti.
Ma a parte questo.Se tutto quello che stai cercando di fare è concatenare tutti i file JMP in una cartella insieme.
Names default to here( 1 );
// this is just creating an example set don't worry about it.
dt = open("$SAMPLE_DATA\Big Class.jmp");
dir = convert file path("$DESKTOP\Example\");
Create Directory(dir);
for(i=1, i<=6, i++,
path = convert file path(char(i)||".jmp", base(dir));
dt << Save As(path);
);
// this is actually what you'll want to run
dir = convert file path("$DESKTOP\Example\");
// find the files in that directory
files = files in directory(dir);
// create a base table
dt_final = New Table("Concatted");
for(i=1, i<=nitems(files), i++,
dt = open(convert file path(files[i], base(dir)));
dt_final << Concatenate(dt, append to first table(1));
close(dt, no save);
)Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoCiao Jim,
Purtroppo ancora non ottengo il risultato sperato perchè non sono stato chiaro nell'esporre la mia situazione.
Avrei dovuto specificare che l'elenco Unique_Files è il nome del file dei CSV archiviati nel percorso della cartella.
Unique_Files = {"FileName1", "FileName2", "FileName3", etc...}
Utilizzando la funzione << Ottieni nome si ottiene l'elenco UniqueTables come
UniqueTables = {"FileName1", "FileName2", "FileName3", etc...}
Quando cerco
UniqueTables = {My_Table_1, My_Table_2, My_Table_3, etc...}
Una volta ottenuto l'elenco UniqueTables in quel formato, il mio piano era di concatenare insieme alcune di quelle tabelle e chiudere le tabelle di origine che erano concatenate.So solo come farlo con il nome di riferimento della tabella My_Table_1. Esiste un modo per concatenare le tabelle dal nome del file "FileName1"?Se c'è, allora posso ignorare del tutto questo problema.
Grazie in anticipo!Sei stato molto utile.
Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoPosso chiederti perché vuoi farlo?In questo modo lo script è molto difficile da supportare perché non è possibile trovare i nomi delle variabili. Correggo gli script una volta che i proprietari non riescono più a comprendere il proprio codice e questo è sempre qualcosa in cui mi imbatto.
Cosa ti dà fornire più variabili che un elenco non ti dà?
Perché sembra inutile averlo
TabelleUnique[1] = Mia_Tabella_1 = DataTable("nomefile1");
Ri: Salvataggio dei nomi delle variabili incrementate nel ciclo For in un elencoTutto quello che devi fare è recuperare il nome della tabella dal riferimento della tabella dati, quindi cambia il tuo riferimento in "Mytab" in:
Insert Into( UniqueTables, MyTab << get name)
Tutti i messaggi per i vari elementi in JSL sono documentati nella Guida allo scripting
Aiuto==>Guida allo scripting