Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleProblem: Ich habe eine JMP-Datei, die sich in einem freigegebenen OneDrive-Ordner befindet. Andere Kollegen synchronisieren diesen OneDrive-Ordner mit ihrem Desktop, sodass wir alle problemlos auf die freigegebene JMP-Datei zugreifen können. In der JMP-Datei befinden sich Links zu anderen Dateien, die sich im selben freigegebenen Ordner wie die JMP-Datei befinden. Da jede Person einen benutzerspezifischen OneDrive-Dateipfad hat, handelt es sich bei meinen Links eigentlich um Formeln, die den benutzerspezifischen Dateipfad erkennen, um dann den benutzerspezifischen entsprechenden Link festzulegen. Leider werden diese Formeln nicht automatisch erneut ausgeführt, wenn jemand Neues die JMP-Datei öffnet. Ich habe zwei Möglichkeiten zur Lösung dieses Problems untersucht und bin kein Fan von einer von beiden:
1. Sie müssen über ein Skript zum erneuten Ausführen von Formeln verfügen, das Sie ausführen müssen, bevor Sie einen Link verwenden. Leider vergessen die Leute dieses Skript. Darüber hinaus erstellen Benutzer häufig Teilmengen der Daten und versuchen dann, das Skript „Formeln erneut ausführen“ auszuführen. Dies funktioniert jedoch nicht, da Formelauswertungen standardmäßig unterdrückt werden.
2. Speichern Sie ein Skript zum erneuten Ausführen von Formeln als „OnOpen“, damit es ausgeführt wird, sobald jemand die JMP-Tabelle öffnet. Leider wird dadurch eine Eingabeaufforderung angezeigt (im Anhang) und die Leute haben zu viel Angst, um „Ja“ zu sagen, wenn sie geöffnet wird, weil Sie haben Angst, dass es etwas ruiniert (sie wissen nicht einmal, wofür es ist)
Fragen
1. Gibt es eine Möglichkeit, einen Hyperlink zu aktualisieren, sobald darauf geklickt wird?
2. Kann ich das „OnOpen“-Popup unterdrücken oder das Popup bearbeiten, um zu erklären, was der Benutzer tun soll?
3. Gibt es außer einem „OnOpen“-Skript eine andere Möglichkeit, die Aktualisierung von Formeln zu ermöglichen, sobald eine JMP-Tabelle geöffnet wird?
Jede Hilfe wird geschätzt. Danke!
Matt
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleHallo @Matt_Converse . Gute Frage. Ich denke, dass Ihre beste Option darin besteht, die Pfade in der gemeinsam genutzten Datei so zu verallgemeinern, dass sie zur Laufzeit erstellt werden. Da wir die Details dieser Datei nicht kennen, wäre es unmöglich, Einzelheiten zu nennen, aber es kann durchaus sein, dass die Verarbeitung von Ausdrücken erforderlich ist. Was Ihre anderen drei Optionen betrifft:
- Hyperlinks sind normalerweise fest codiert. Ich müsste mehr darüber wissen, wie und wo Sie sie verwenden.
- Ja. Das Problem besteht darin, dass Sie die Benutzereinstellungen des Benutzers ändern müssen, bevor OnOpen ausgeführt wird.
- Nicht dass ich wüsste
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleHey @DonMcCormack !
Danke für die schnelle Antwort. Gerne füge ich weitere Details hinzu. Hier ist ein Beispiel dafür, wie die Links (d. h. Pfade zu Dateien/Ordnern) variieren:
- mein Dateipfad zu einem Ordner mit SEM-Bildern: C:\Benutzer\ mconvers \OneDrive – WL Gore & Associates, Inc\Example Shared Database\SEM Library\4391
- Dateipfad meiner Kollegen zum gleichen Ordner: C:\Benutzer\ mjohnson \OneDrive – WL Gore & Associates, Inc\Example Shared Database\SEM Library\4391
In der beigefügten Beispieltabelle („Table1.jmp“) sehen Sie, wie ich mithilfe einer Formel in der Spalte „SEM-Ordnerpfad“ einen benutzerspezifischen Ordnerpfad ermittle. Es liest im Wesentlichen den Dateipfad der Haupttabelle („Table1.jmp“), um das benutzerspezifische Verzeichnis abzurufen, und hängt dann „SEM Library…“ an.
dt_name = "Tabelle1";
dt = Datentabelle( dt_name );
path_full = dt << Get Path();
name_file = dt_name || ".jmp";
n = Munger( path_full, 1, name_file );
path_folder = Substr( path_full, 1, n - 1 );
path = path_folder || „SEM-Bibliothek“ || "\" || Char( :Datenbanknummer );
Anschließend verwende ich einen Event-Handler, um den Hyperlink zu setzen (Spalte „SEM-Ordner-Link“). Ich habe einen vollständigen ZIP-Ordner angehängt, damit Sie auch einen Eindruck von der gesamten Dateistruktur bekommen.
Ich würde gerne mehr darüber erfahren, wie ich es tun könnte. Verallgemeinern Sie die Pfade in der gemeinsam genutzten Datei, sodass sie zur Laufzeit erstellt werden. Danke!
Matt
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleSie können die Windows-Systemvariable %OneDrive% verwenden, um den Benutzerpfad zum Basisordner eines Laufwerks abzurufen.
Verwenden Sie Get Environment Variable( "ONEDRIVE" ); um es aufzurufen und in der URL zu verwenden.
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleWie wäre es mit so etwas wie dem beigefügten? Ich habe den Ordnerpfad gekürzt, um den allen Benutzern gemeinsamen Teil zu enthalten, und den Ereignishandler so geändert, dass er den verbleibenden Teil (dh den eindeutigen Teil) des Pfads erstellt.
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleSie können auch die Get Environment Variable( "ONEDRIVE" ); im Event-Handler ... da Sie nicht möchten, dass es für jede Zeile ausgeführt wird, sondern nur dann, wenn es benötigt wird 
Außerdem funktioniert es wahrscheinlich nicht für Macs und Linux-Computer, es sei denn, die OneDrive-Systemvariable ist eingerichtet ...
Wenn die JMP-Datei nur an einem Ort im Netzwerk gespeichert werden soll (z. B. im Ordner „Example Shared Database“), können Sie auch eine als relativer Pfad formatierte URL verwenden.
dh path = "..\SEM Library\" || Char( :Datenbanknummer );
Dies sollte sogar auf Macs funktionieren ... aber die JMP-Datei muss sich im Ordner direkt oben unter „SEM Library“ befinden.
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleDoh ... der relative Pfad wäre ein einzelner Punkt für den aktuellen Ordner ...
Pfad = ".\SEM-Bibliothek\" || Char( :Datenbanknummer );
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-Tabelle@DonMcCormack , das hat super funktioniert! (Ich musste nur einen Schrägstrich in einen Backslash ändern)
Ich denke, Ihr bearbeitetes Skript behebt den ersten Teil meines Problems, das heißt, die Links werden zur Laufzeit erstellt. Die zweite Herausforderung, auf die meine Benutzer häufig stoßen, besteht jedoch darin, dass sie Teilmengen dieser Tabelle erstellen und dann hoffen, Links zu folgen. Leider werden die Teilmengen nicht gespeichert und verfügen daher nicht über einen Dateipfad zum Lesen. Irgendwelche Vorschläge hier?
ich könnte benutzen @DByss ist der Vorschlag, die onedrive-spezifische Umgebung des Benutzers abzurufen, aber zwischen dieser und „Tabelle1“ gibt es eine Dateipfadstruktur, die einige Benutzer geändert haben (so dass selbst diese möglicherweise nicht von Benutzer zu Benutzer konsistent ist).
Vielen Dank für all die Hilfe!
Matt
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleHier ist eine Idee. Speichern Sie die Spalten, die für den Zugriff auf die Verzeichnislisten erforderlich sind. Fügen Sie als erste Spalte eine ID-Spalte (durchnummeriert von 1 bis N Zeilen) hinzu. Ersetzen Sie das Event-Handler-Skript durch dieses
Function( {thisTable, thisColumn, iRow},{rowID},
If(!Namespace Exists("myCustomFunctionNamespace"),
New Namespace("myCustomFunctionNamespace");
myCustomFunctionNamespace:thisPath = Substr(thisTable << Get Path,1,Contains(thisTable << Get Path,"/",-1));
myCustomFunctionNamespace:semFolderPath = Column(thisTable,"SEM Folder Path << Get Values");
);
rowID = Column(thisTable,1);
Open(Char(myCustomFunctionNamespace:thisPath || "/" || myCustomFunctionNamespace:semFolderPath[ rowID] ));
);
Die Spaltenwerte werden in Listen geladen und alle Vorgänge basieren auf diesen Werten und nicht auf etwas, das in einer Tabelle nachgeschlagen werden muss (mit Ausnahme des ID-Werts, der auf die Zeilennummer der Originaltabelle verweist).
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleDanke, @DonMcCormack ! Ich habe eine ID-Spalte hinzugefügt und den Event-Handler ersetzt; Ich erhalte jedoch diese Fehlermeldung, wenn ich auf den Link in Zeile 1 klicke: „Indexproblem in Zeile 1 beim Zugriff oder bei der Auswertung von ‚myCustomFunctionNamespace:semFolderPath[ /*###*/rowID]‘“. Verstehen Sie, worauf sich „/*###*/“ bezieht? Ich weiß, dass wir nah dran sind, weil ich das Skript außerhalb einer Funktion ausführen lassen kann (siehe mein gespeichertes Skript). Beachten Sie, dass ich den Link nur teste, bevor ich eine Teilmenge erstelle (ich habe es noch nicht mit einer Teilmenge versucht).
Schätze wirklich deine Hilfe.
Matt
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-TabelleDas tut mir leid @Matt_Converse . Die vorletzte Codezeile sollte sein
rowID = Column(thisTable,1)[iRow]
Sie möchten auf den Wert aus der ersten Spalte in der ausgewählten Zeile (aus der Teilmenge) verweisen. So wie ich es verstanden habe, bezog es sich auf die gesamte Kolumne.
Betreff: Probleme beim Erstellen benutzerspezifischer Links innerhalb einer JMP-Tabelle@DonMcCormack , das hätte ich fangen sollen! Danke schön! Das funktioniert jetzt auch für Teilmengen! Ich werde häufiger Event-Handler verwenden müssen! Ich schätze die Hilfe wirklich.