Salut tout le monde,
Je mets à jour un script sur lequel j'ai travaillé et une fois l'analyse terminée, je souhaite enregistrer une image de la fenêtre du rapport, puis enregistrer un script dans la table de données qui ouvrira l'image si l'utilisateur le souhaite. que. Chaque analyse générera une nouvelle image de rapport et j'ai besoin que le script soit enregistré dans la référence de table de données qui a mis à jour le nom de fichier (tous sont dans le même répertoire).
Remarque : je dois enregistrer le rapport sous forme d'image car j'ai des tables de données temporaires qui sont référencées lors de la création du rapport, et je ne souhaite pas enregistrer ces tables de données, même si je les enregistre dans le script de table de données. ce serait aussi cool si quelqu'un a une solution à ce problème.
Quoi qu'il en soit, ce avec quoi j'ai du mal, c'est que lorsque le nouveau script est enregistré dans la table de données, il écrit les variables dans mon script principal, pas les caractères que je veux. J'ai essayé Eval Insert() et Eval(Substitute(Expr())) pour essayer d'obtenir cela, mais rien ne fonctionne.
Vous trouverez ci-dessous un exemple d’un tel résultat de l’analyse :

L'analyse crée en fait une autre table de données afin de construire l'image GB en bas à droite, cette table de données :

Mais, lorsque l'analyse est terminée ou que l'utilisateur effectue une analyse sur une autre colonne, cette table de données est supprimée et je n'y ai plus de référence - j'ai essayé d'utiliser le << Script d'enregistrement de tous les objets dans les données. Commande Table, mais cela nécessite une référence à la table de données ci-dessus pour ensuite générer le générateur de graphiques, mais la table de données a maintenant disparu.
Au lieu de cela, je dois enregistrer la fenêtre au format png, ce qui est OK, et devrait ressembler à la première image ci-dessus, mais au format PNG. Une itération du code dans le script dans lequel je fais cela se trouve ici :
Button Box( "Save Results to DT",
path = dt << Get Path; //gets the dt's path
l = Length( path ) - Length( dt << GetName ) - 4; // takes off dt name and .jmp extension
dir = Left( path, l ); //actual path where the PNG file is supposed to be saved
If( N Items( Icols ) == 0 & N Items( Xcols ) == 0,
pic_name = "Self_Corr_" || ycols[1] || ".png"; //name of the picture
nwin[Outline Box( 1 )] << Save Picture( dir || pic_name, "png" ); //saves the report window as a PNG to the directory<BR /> full_name=dir||pic_name;
dt << New Script( "Self Corr of " || ycols[1], Open( full_name ) ); // the new script is supposed to substitute the actual dir name and pic_name, not the variables.
);
)
Il crée un script pour la table de données qui ressemble à ceci :

Mais le script devrait plutôt être celui-ci :

Où j'ai copié/collé ce qui devrait être dans le script pour montrer ce que j'essaie de faire faire au script principal. Cela devrait être faisable, mais toutes les tentatives que j'ai faites ne fonctionnent pas.
Comme mentionné précédemment, je suis d'accord pour enregistrer les rapports au format PNG et l'utilisateur ouvre simplement le rapport au format PNG dans JMP, mais si possible, je préfère que les tables de données temporaires soient enregistrées dans le New Script() afin que lorsque le L'utilisateur clique sur le script, il générera la table de données temporaires nécessaire pour une capacité interactive complète, mais je pense que ce sera plus difficile.
Merci pour toute contribution ou suggestion !,
DS
Vous pouvez stocker la création de la table sous forme de script de table si vous le souhaitez, mais ceux-ci peuvent devenir assez volumineux et prendre beaucoup de place. Vous pouvez également stocker l'image dans une table. Vous trouverez ci-dessous trois options différentes, n'oubliez pas de vérifier à quoi ressemblent les scripts dans le tableau
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Saving table creation
dt_script = dt << Get Script;
Eval(EvalExpr(
dt << New Script("Create Table", Expr(Name Expr(dt_script)));
));
// Saving image
img = Open("$SAMPLE_IMAGES/windmap.png", "png");
Eval(EvalExpr(
dt << New Script("Open Image",
New Window("Image",
Picture Box(Expr(img));
)
)
));
// Saving filepath which will open the image
file_path = "$SAMPLE_IMAGES/windmap.png";
Eval(EvalExpr(
dt << New Script("Open File from Path",
Open(Expr(file_path))
)
));
Au fait, avez-vous envisagé d'utiliser des projets JMP pour cela ?
J'appuie la suggestion de Jarmo de rechercher une solution dans un projet JMP.
Salut @jthi et @txnelson ,
Merci pour les commentaires rapides et les idées. J'apprécie les différentes options pour enregistrer le script dans la table de données. J'ai finalement opté pour l'image, car enregistrer la table de données temporaire et devoir ensuite appeler ce script avec le nouveau script s'est avéré compliqué.
J'ai envisagé des projets pour cela, mais je ne pense pas que la façon dont les utilisateurs interagiront avec cela sera aussi utile dans un format de projet. Je pense que je suis peut-être le seul dans mon organisation à utiliser Projects. Si cela change, j'envisagerais certainement de mettre à jour le code.
Merci encore pour toute l'aide !,
DS