Re : Comment ajouter un bouton pour ouvrir un script dans un autre dossier.cela pourrait aider : essayez d'utiliser "include" au lieu de "open".
Names Default To Here( 1 );
dir=Get Path Variable( "SAMPLE_SCRIPTS" );
file_name = "chaosGame.jsl";
file_path = Char(Dir || file_name);
show(file_path);
Current Journal() << Append( Button Box("Chaos Game", include (file_path)))
Re : Comment ajouter un bouton pour ouvrir un script dans un autre dossier.Salut @Byron_JMP Merci pour votre suggestion mais je reçois toujours la même erreur
Name Unresolved: file_path in access or evaluation of 'file_path' , file_path/*###*/
Re : Comment ajouter un bouton pour ouvrir un script dans un autre dossier.Vous avez une boîte à boutons qui a un script joint -- Ouvrir( chemin_fichier ) .Considérez ce script comme un morceau de papier.Pensez maintenant à cliquer sur le bouton pour démarrer une nouvelle instance JMP vierge.Dans cette nouvelle instance, vous lui demandez d'exécuter le script qui se trouve sur ce morceau de papier.Lors de l'exécution de ce script, il trouve le nom chemin du fichier et fait une recherche de nom.Étant un état vide complet, il ne peut pas déterminer ce que chemin du fichier est censé signifier, donc il génère une erreur.
De toute évidence, ce n'est pas exactement ce qui se passe, mais il se trouve que lorsque le bouton est cliqué, le script joint est exécuté dans une portée qui n'est pas la même que lorsque vous avez créé le bouton.Ceci est vrai pour tous les scripts de zone d'affichage.Ils ne sauront rien de la portée/des variables qui étaient présentes lors de la création de la boîte d'affichage - les scripts/fonctions attachés s'exécutent dans une nouvelle portée complètement séparée.
Une solution simple consiste à utiliser Eval( Eval Expr( ... Expr( ... ) ... ) ) , comme ça:
LoadTableType = Function( {reportType},
Dir = Get Default Directory();
If(
reportType == "PD",
file_name = "JMP script/Load_PD.jsl";
file_path = Char(Dir || file_name);
Eval( Eval Expr(
Current Journal() << Append( Button Box( "Load PD Table", Open( Expr( file_path ) ) ) )
) )
);
);cela pré-évalue le nom file_path afin que le script ne voie pas de nom mais plutôt une chaîne avec le chemin correct.
Comment ajouter un bouton pour ouvrir un script dans un autre dossier.Salut à tous, comment puis-je faire en sorte que chaque fois que je clique sur un bouton que j'ai placé dans un journal, il exécute le script qui se trouve dans un autre dossier.
En utilisant un script de test ci-dessous, je suis capable d'ouvrir avec succès un script dans un autre dossier. C'est sur JMP16.
Names Default To Here( 1 );
Clear Log();
Dir = Get Default Directory();
file_name = "JMP script/Load_PD.jsl";
file_path = Char(Dir || file_name);
Open(file_path);
En utilisant le script de test que j'ai créé, j'ai essayé de l'implémenter dans mon script principal, comme indiqué ci-dessous.
Le script ci-dessous n'est qu'un extrait.
LoadTableType = Function( {reportType},
Dir = Get Default Directory();
If(
reportType == "PD",
file_name = "JMP script/Load_PD.jsl";
file_path = Char(Dir || file_name);
show(file_path);
Current Journal() << Append( Button Box("Load PD Table", Open (file_path))),
);
);Cependant, une fois que le code principal a fini de s'exécuter et que le bouton est généré, chaque fois que je clique sur le bouton, je continue à recevoir cette erreur ci-dessous :
Name Unresolved: file_path in access or evaluation of 'file_path' , file_path/*###*/
J'apprécierais grandement tout conseil donné merci!
Automatisation et scriptOrganisation du contenuAccès aux donnéesles fenêtres