Betreff: So fügen Sie eine Schaltfläche hinzu, um ein Skript in einem anderen Ordner zu öffnen.Das könnte helfen: Versuchen Sie es mit „include“ anstelle von „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)))
Betreff: So fügen Sie eine Schaltfläche hinzu, um ein Skript in einem anderen Ordner zu öffnen.Hallo @Byron_JMP Vielen Dank für Ihren Vorschlag, aber ich erhalte immer noch die gleiche Fehlermeldung
Name Unresolved: file_path in access or evaluation of 'file_path' , file_path/*###*/
Betreff: So fügen Sie eine Schaltfläche hinzu, um ein Skript in einem anderen Ordner zu öffnen.Sie haben eine Schaltflächenbox mit einem angehängten Skript – Öffnen (Dateipfad) .Stellen Sie sich dieses Skript als ein Stück Papier vor.Stellen Sie sich das Klicken auf die Schaltfläche nun als das Starten einer neuen, leeren JMP-Instanz vor.In diesem neuen Fall bitten Sie ihn, das Skript auszuführen, das auf diesem Blatt Papier steht.Beim Ausführen dieses Skripts wird der Name gefunden Dateipfad und führt eine Namenssuche durch.Da es sich um einen völlig leeren Zustand handelt, kann es nicht bestimmen, was Dateipfad soll bedeuten, also wird ein Fehler ausgegeben.
Das ist natürlich nicht genau das, was passiert, aber es ist so, dass beim Klicken auf die Schaltfläche das angehängte Skript in einem Bereich ausgeführt wird, der nicht mit dem Bereich übereinstimmt, in dem Sie die Schaltfläche erstellt haben.Dies gilt für alle Displaybox-Skripte.Sie wissen nichts über den Bereich/die Variablen, die beim Erstellen des Anzeigefelds vorhanden waren – die angehängten Skripte/Funktionen werden in einem neuen, völlig separaten Bereich ausgeführt.
Eine einfache Lösung ist die Verwendung Eval( Eval Expr( ... Ausdruck( ... ) ... ) ) , so was:
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 ) ) ) )
) )
);
);Dadurch wird der Name file_path vorab ausgewertet, sodass das Skript keinen Namen, sondern eine Zeichenfolge mit dem richtigen Pfad sieht.
So fügen Sie eine Schaltfläche hinzu, um ein Skript in einem anderen Ordner zu öffnen.Hallo zusammen, wie kann ich dafür sorgen, dass jedes Mal, wenn ich auf eine Schaltfläche klicke, die ich in einem Tagebuch platziert habe, das Skript ausgeführt wird, das sich in einem anderen Ordner befindet?
Mit einem Testskript unten kann ich das Skript erfolgreich in einem anderen Ordner öffnen. Dies ist auf 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);
Mit dem von mir erstellten Testskript habe ich versucht, es wie unten gezeigt in mein Hauptskript zu implementieren.
Das unten gezeigte Skript ist nur ein Ausschnitt.
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))),
);
);Nachdem jedoch die Ausführung des Hauptcodes abgeschlossen und die Schaltfläche generiert wurde, erhalte ich jedes Mal, wenn ich auf die Schaltfläche klicke, die folgende Fehlermeldung:
Name Unresolved: file_path in access or evaluation of 'file_path' , file_path/*###*/
Würde mich sehr über jeden Rat freuen, vielen Dank!
Automatisierung und SkripterstellungInhaltsorganisationDatenzugriffWindows