在 jmp 表中建立特定於使用者的連結時遇到問題問題:我有一個 jmp 檔案位於共用 OneDrive 資料夾中。 其他同事將此 OneDrive 資料夾同步到他們的桌面,以便我們都可以輕鬆存取共享的 jmp 檔案。 jmp 檔案內部包含與 jmp 檔案位於同一共用資料夾中的其他檔案的連結。 由於每個人都有特定於使用者的 OneDrive 檔案路徑,因此我的連結實際上是檢測特定於使用者的檔案路徑的公式,然後設定特定於使用者的適當連結。 不幸的是,當新人打開 jmp 檔案時,這些公式不會自動重新運行。 我已經探索了兩種選擇來解決這個問題,但我不喜歡其中任何一種:
1. 有一個「重新運行公式」腳本,在使用連結之前必須執行該腳本:不幸的是,人們忘記了這個腳本。 此外,人們通常會建立資料子集,然後嘗試執行「重新運行公式」腳本,但它不起作用,因為預設會抑制公式計算。
2. 將“重新運行公式”腳本保存為“OnOpen”,以便有人打開jmp 表時它會立即運行:不幸的是,這會導致出現提示(附後),並且人們在打開它時不敢說“是”,因為他們擔心它會毀掉一些東西(他們甚至不知道它的用途)
問題
1. 有沒有辦法讓超連結一點擊就更新?
2. 我可以抑制「OnOpen」彈出視窗或編輯彈出視窗來解釋使用者應該做什麼嗎?
3. 除了「OnOpen」腳本之外,還有其他方法可以讓公式在 jmp 表開啟後立即更新嗎?
任何幫助表示讚賞。 謝謝!
馬特
回覆:在 jmp 表中建立使用者特定連結時遇到問題你好@馬特_匡威。 好問題。 我認為您最好的選擇是概括共享文件中的路徑,以便它們在運行時構建。 由於不知道該文件的詳細信息,因此無法給出具體細節,但很可能涉及表達式處理。 至於你的其他三個選擇:
- 超連結通常是硬編碼的。 我必須更多地了解您如何以及在何處使用它們。
- 是的。 問題是,您需要在執行 OnOpen 之前更改使用者的使用者首選項。
- 據我所知
回覆:在 jmp 表中建立使用者特定連結時遇到問題嘿@唐麥考馬克!
感謝您的及時回覆。 我很高興添加更多細節。 以下是連結(即檔案/資料夾的路徑)如何變化的範例:
- 我的 SEM 圖像資料夾的檔案路徑:C:\Users\麥克弗斯\OneDrive - WL Gore & Associates, Inc\範例分享資料庫\SEM 庫\4391
- 我的同事檔案路徑到同一資料夾:C:\Users\米約翰遜\OneDrive - WL Gore & Associates, Inc\範例分享資料庫\SEM 庫\4391
在範例表(“Table1.jmp”,附件)中,您將看到我如何使用“SEM 資料夾路徑”列中的公式來確定使用者特定的資料夾路徑。 它本質上讀取主表(“Table1.jmp”)的檔案路徑以獲取用戶特定的目錄,然後附加“SEM Library...”
dt_name = "表1";
dt = 資料表( dt_name );
path_full = dt << 取得路徑();
檔案名稱 = dt_name || “.jmp”;
n = 芒格(path_full, 1, name_file);
path_folder = Substr(path_full, 1, n - 1 );
路徑 = 路徑資料夾 || “SEM圖書館”|| “\”|| Char(:資料庫編號);
然後,我使用事件處理程序來設定超連結(「SEM 資料夾連結」列)。 我附上了一個完整的壓縮資料夾,以防它也可以幫助您了解整個文件結構。
我很想聽聽更多關於我如何“概括共享文件中的路徑,以便它們在運行時構建」。 謝謝!
馬特
回覆:在 jmp 表中建立特定於使用者的連結時遇到問題您可以使用 %OneDrive% Windows 系統變數來取得基本一磁碟機資料夾的使用者路徑;
使用取得環境變數(“ONEDRIVE”);呼叫它並在 url 中使用。
回覆:在 jmp 表中建立使用者特定連結時遇到問題像附件這樣的東西怎麼樣? 我縮短了資料夾路徑以包含所有使用者通用的部分,並更改了事件處理程序以建立路徑的剩餘部分(即唯一部分)。
回覆:在 jmp 表中建立使用者特定連結時遇到問題您也可以使用取得環境變數(“ONEDRIVE”);在事件處理程序中...因為您不希望它在需要時為每一行運行:)
此外,除非設定了 OneDrive 系統變量,否則它可能不適用於 Mac 和 Linux 電腦...
如果 JMP 檔案僅位於網路上的一個位置(例如「範例共用資料庫」資料夾中),您也可以使用格式化為相對路徑的 url。
即路徑 =“..\SEM 庫\” || Char(:資料庫編號);
這甚至應該在 Mac 上工作......但是 jmp 檔案必須位於“SEM 庫”直接上方的資料夾中
回覆:在 jmp 表中建立使用者特定連結時遇到問題doh...相對路徑將是目前資料夾的一個點...
路徑= “.\SEM 庫\” || Char(:資料庫編號);
回覆:在 jmp 表中建立特定於使用者的連結時遇到問題@唐麥考馬克,效果很好! (我只需要將一個正斜線更改為反斜線)
我認為您編輯的腳本解決了我的問題的第一部分,即連結是在運行時建立的。 然而,我的用戶通常遇到的第二個挑戰是他們創建該表的子集,然後希望追蹤連結。 不幸的是,子集未保存,因此沒有可供讀取的檔案路徑。 這裡有什麼建議嗎?
我可以用@DByss建議取得使用者的 onedrive 特定環境,但在該環境和「Table1」之間存在一個檔案路徑結構,我看到一些使用者發生了變更(因此即使使用者之間的情況也可能不一致)。
感謝您的幫忙!
馬特
回覆:在 jmp 表中建立特定於使用者的連結時遇到問題這是一個想法。 儲存存取目錄清單所需的列。 新增 ID 列(依照 1 行到 N 行的順序編號)作為第一列。 將事件處理程序腳本替換為此
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] ));
);
列值被載入到清單中,所有操作都基於這些值,而不是需要在表中尋找的內容(ID 值除外,它引用原始表中的行號)。
回覆:在 jmp 表中建立特定於使用者的連結時遇到問題謝謝, @唐麥考馬克! 我新增了一個 ID 列並替換了事件處理程序;但是,當單擊第 1 行中的連結時,我收到此錯誤:「訪問或評估 'myCustomFunctionNamespace:semFolderPath[ /*###*/rowID]' 時第 1 行的下標問題」。 你明白「/*###*/」指的是什麼嗎? 我知道我們已經很接近了,因為我可以讓腳本在函數之外運行(請參閱我保存的腳本)。 請注意,我只是在創建子集之前測試連結(尚未使用子集進行嘗試)。
非常感謝您的幫忙。
馬特
回覆:在 jmp 表中建立特定於使用者的連結時遇到問題對於那個很抱歉@馬特_匡威。 倒數第二行程式碼應該是
rowID = Column(thisTable,1)[iRow]
您想要引用所選行(來自子集)中第一列的值。 按照我的方式,它引用了整個專欄。
回覆:在 jmp 表中建立使用者特定連結時遇到問題@唐麥考馬克,我應該抓住的! 謝謝你! 這現在也適用於子集! 我將不得不開始更頻繁地使用事件處理程序! 非常感謝您的幫忙。