Script permettant de combiner des scripts de table de données avec des données provenant de plusieurs fichiers et de les enregistrer dans un fichier JSLSalut tout le monde !
Après avoir essayé pendant trop longtemps, je ne parviens pas à faire fonctionner ce code. J'essaie de créer un script permettant à l'utilisateur de sélectionner un fichier parmi une liste de fichiers ouverts. Pour chaque fichier sélectionné, le code copie les scripts des tables de données, puis les colle dans un seul fichier JSL. Je peux ensuite les exécuter ultérieurement et les rouvrir. En gros, c'est une façon de regrouper plusieurs tables de données dans un seul fichier (sans avoir à les compresser), ce qui facilite le stockage d'analyses plus complexes. Ce code fait la plupart de mes besoins, mais je n'arrive pas à enregistrer les scripts des tables dans un fichier JSL ; ils demandent constamment une copie des fichiers.
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 );
Merci pour tout conseil !!
Steve
Automatisation et scriptsRe : Script pour combiner des scripts de table de données avec des données de plusieurs fichiers et les enregistrer dans un fichier JSLJe ne recommande pas d'enregistrer la table de données sous forme de script, sauf si elle est très petite, car la taille du script peut rapidement devenir importante. Mais si vous tenez absolument à le faire, vous pouvez utiliser un outil comme celui-ci.
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 pour combiner des scripts de table de données avec des données de plusieurs fichiers et les enregistrer dans un fichier JSLSelon l'utilisation que vous ferez des tables ultérieurement, vous pourrez les collecter dans un projet JMP ou un fichier zip (les deux sont possibles avec JSL). Vous devrez peut-être créer un script de chargement de table distinct si vous optez pour cette solution, sauf si vous souhaitez utiliser les fichiers du projet JMP. Personnellement, je n'apprécie pas du tout leur implémentation, c'est pourquoi je les évite, mais je les utilise occasionnellement pour empaqueter des fichiers JMP à des fins d'archivage.
Re : Script pour combiner des scripts de table de données avec des données de plusieurs fichiers et les enregistrer dans un fichier JSLMerci @jthi !
J'ai ajouté ton code au mien et ça fonctionne parfaitement ! Merci pour l'info sur la taille du fichier, je vais surveiller ça.
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 pour combiner des scripts de table de données avec des données de plusieurs fichiers et les enregistrer dans un fichier JSL@jthi , quel serait le JSL pour enregistrer dans un fichier ZIP ? Je ne vois rien dans l'index des scripts.
Re : Script pour combiner des scripts de table de données avec des données de plusieurs fichiers et les enregistrer dans un fichier JSLJe pense que vous devez enregistrer vos tables temporairement afin de pouvoir les charger en tant que 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");
Il y a pas mal d’améliorations qui pourraient être ajoutées ici.