Script per combinare script di tabelle dati con dati provenienti da più file e salvarli in un file JSLCiao a tutti!
Ok, dopo aver provato per troppo tempo, non so come far funzionare questo codice. Sto cercando di creare uno script che consenta a un utente di selezionare da un elenco di file aperti e, per ogni file selezionato, il codice copierà gli script delle tabelle dati e li incollerà tutti in un unico file JSL che potrò eseguire in un secondo momento e che aprirà nuovamente tutte le tabelle dati. In pratica, è un modo per comprimere un gruppo di tabelle dati in un unico file (senza doverle comprimere), in modo da poter archiviare più facilmente analisi più complesse. Questo codice fa quasi tutto quello che voglio, ma non riesco a salvare gli script delle tabelle in un file JSL, perché continuano a voler aprire una copia dei file.
Names Default To Here(1);
nw = new window("Trial",show menu(0),
vlistbox(
hlistbox(
panelbox("Open data tables",
lb = listbox(get data table list ());
),
panelbox("Data tables to save into one script file",
lb2 = listbox();
),
),
buttonbox("press to select tables",dtla=lb << Get Selected;lb2 << Append( dtla ); ),
buttonbox("press to remove tables",lb2 << Remove Selected(); ),
panelbox("what is the file name?",
teb1=Texteditbox();
),
buttonbox("press to save",
dtlb=lb2 << Get items;
fn=teb1 << Get Text();
list_of_table_scripts={};
For( i = 1, i <= N Items( dtlb ), i++,
y = datatable(dtlb[i]) << Get Script With Data Table();
insertinto(list_of_table_scripts,y);
);
Save Text File( "$desktop\"||fn||".jsl", y );
nw<< Close Window;
)
)
);
teb1<< Set Width( 200 );
Grazie per ogni consiglio!!
Steve
Automazione e scriptingRe: Script per combinare script di tabelle dati con dati provenienti da più file e salvarli in un file JSLNon consiglierei di salvare una tabella dati come script, a meno che non sia molto piccola, perché le dimensioni dello script possono rapidamente diventare enormi. Ma se proprio vuoi farlo, potresti usare qualcosa del genere.
Names Default To Here(1);
dt1 = Open("$SAMPLE_DATA/Big Class.jmp");
dt2 = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
tables = Get Data Table List() << get name;
tablescripts = {};
For Each({tablename}, tables,
s = DataTable(tablename) << Get Script;
Insert Into(tablescripts, Char(Name Expr(s)));
);
Save Text File("$DOWNLOADS/demo.jsl", Concat Items(tablescripts, ";"));
Re: Script per combinare script di tabelle dati con dati provenienti da più file e salvarli in un file JSLA seconda di come si utilizzeranno le tabelle in seguito, è possibile raccoglierle in JMP Project o in un file zip (entrambe le operazioni sono possibili con JSL). Se si sceglie questa soluzione, potrebbe essere necessario creare uno script separato per il caricamento delle tabelle, a meno che non si desideri utilizzare i file di JMP Project. Personalmente, non apprezzo affatto la loro implementazione, quindi tendo a evitarle, ma le ho usate di tanto in tanto per impacchettare file JMP a scopo di archiviazione.
Re: Script per combinare script di tabelle dati con dati provenienti da più file e salvarli in un file JSLGrazie @jthi !
Ho aggiunto il tuo codice al mio e funziona alla grande! Grazie per l'avvertimento sulle dimensioni del file, dovrò tenerlo d'occhio.
Names Default To Here(1);
nw = new window("Trial",show menu(0),
vlistbox(
hlistbox(
panelbox("Open data tables",
lb = listbox(get data table list ());
),
panelbox("Data tables to save into one script file",
lb2 = listbox();
),
),
buttonbox("press to select tables",dtla=lb << Get Selected;lb2 << Append( dtla ); ),
buttonbox("press to remove tables",lb2 << Remove Selected(); ),
panelbox("what is the file name?",
teb1=Texteditbox();
),
buttonbox("press to save",
dtlb=lb2 << Get items;
fn=teb1 << Get Text();
tablescripts = {};
For Each({tablename}, dtlb,
s = DataTable(tablename) << Get Script;
Insert Into(tablescripts, Char(Name Expr(s)));
);
Save Text File( "$desktop\"||fn||".jsl", Concat Items(tablescripts, ";") );
nw<< Close Window;
)
)
);
teb1<< Set Width( 200 );
Re: Script per combinare script di tabelle dati con dati provenienti da più file e salvarli in un file JSL@jthi , quale sarebbe il JSL per salvare in un file ZIP? Non vedo nulla nell'indice degli script.
Re: Script per combinare script di tabelle dati con dati provenienti da più file e salvarli in un file JSLPenso che dovresti salvare temporaneamente le tue tabelle in modo da poterle caricare come blob
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Save("$TEMP\blob.jmp"); // save jmp table to load it as a blob
Close(dt, no save);
b = Load Text File("$TEMP\blob.jmp", blob);
za = Open("$TEMP\deleteMe.zip", zip);
za << Write("Big Class.jmp", b);
Delete File("$TEMP\blob.jmp");
Ci sono parecchi miglioramenti che potrebbero essere aggiunti qui.