Script para combinar scripts de tablas de datos con datos de múltiples archivos y guardarlos en un archivo JSL¡Hola a todos!
Bueno, después de tanto intentarlo, no consigo que este código funcione. Estoy intentando crear un script que permita al usuario seleccionar archivos abiertos de una lista. Para cada archivo seleccionado, el código copiará los scripts de las tablas de datos y los pegará en un único archivo JSL que luego podré ejecutar y que abrirá todas las tablas de datos. Básicamente, es una forma de comprimir varias tablas de datos en un solo archivo (sin tener que comprimirlas) para facilitar el almacenamiento de análisis más complejos. Este código cumple casi todo lo que necesito, pero no consigo que los scripts de las tablas se guarden en un archivo JSL; siguen queriendo abrir una copia de los archivos.
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 );
¡¡¡Gracias por cualquier orientación!!!
Steve
Automatización y scriptingRe: Script para combinar scripts de tablas de datos con datos de múltiples archivos y guardarlos en un archivo JSLNo recomendaría guardar una tabla de datos como script a menos que sea muy pequeña, ya que el tamaño del script puede crecer rápidamente. Pero si realmente quieres hacerlo, podrías usar algo como esto.
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 para combinar scripts de tablas de datos con datos de múltiples archivos y guardarlos en un archivo JSLDependiendo de cómo vaya a usar las tablas posteriormente, puede recopilarlas en un proyecto JMP o en un archivo zip (ambos se pueden hacer con JSL). Si opta por esta opción, podría tener que crear un script independiente para el cargador de tablas, a menos que desee usar los archivos del proyecto JMP. Personalmente, no me gusta nada su implementación, así que suelo evitarlas, pero las he usado ocasionalmente para empaquetar archivos JMP con fines de archivo.
Re: Script para combinar scripts de tablas de datos con datos de múltiples archivos y guardarlos en un archivo JSL¡Gracias @jthi !
Añadí tu código al mío y ¡funciona de maravilla! Gracias por avisarme sobre el tamaño del archivo; tendré que estar atento.
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 para combinar scripts de tablas de datos con datos de múltiples archivos y guardarlos en un archivo JSL@jthi , ¿cuál sería el JSL para guardar en un archivo ZIP? No veo nada en el índice de scripts.
Re: Script para combinar scripts de tablas de datos con datos de múltiples archivos y guardarlos en un archivo JSLCreo que debes guardar tus tablas temporalmente para poder cargarlas como blobs
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");
Hay bastantes mejoras que se podrían añadir aquí.