執行沒有關聯表的 JMP 腳本我有一個 JMP 腳本,它啟動 SQL 查詢,然後處理生成的資料表。然後它執行一系列列操作和其他表操作。當我在 JSL 建構器中執行腳本時,它仍然在「播放」按鈕旁邊的方塊中列出一個資料表。即使我有“NamesDefaultToHere(1)”,它通常仍會更改 JSL 視窗框中列出的表中的列(如果它們具有相同的列名稱) - 而不是由 SQL 查詢產生的表。我可以在腳本中添加一行來防止這種行為嗎?例如,使用下面的腳本 - 如果現有表有一列“DIEID”,它將發生更改,而不是腳本創建的 SQL 資料表。如果沒有打開的表,則它可以正常工作。
謝謝,如果您需要更多信息,請告訴我。
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
dtIGNITE << show window(1);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));
回覆:執行沒有關聯表的 JMP 腳本在我迄今為止的數據拼寫錯誤和我自己對範圍/變量的一些困惑之間 - 你的解決方案有效。下面是最終實現的腳本。
感謝您的幫忙!
NamesDefaultToHere(1);
query = open("C:\Users\tbaker1\Documents\JMP Scripts\IgniteRuns_V2.jmpquery",Private);
dtIGNITE = query << Run Foreground();
Current Data Table (dtIGNITE);
dtIGNITE << New Column("DIEID");
Column("DIEID") << Formula(If(
!Is Missing( :Name( "Old-DieID" ) ), :Name( "Old-DieID" ),
!Is Missing( :Name( "EEPROM-FCSerialNumber" ) ), :Name( "EEPROM-FCSerialNumber" ),
"Missing"));回覆:執行沒有關聯表的 JMP 腳本若要指定 dtIGNITE 表為目前表,語法為:
Current Data Table( dtINGNITE );
由於 Baselines-EXT 表具有相同名稱的列,因此請嘗試將可選列參考新增至 Column() 函數。這告訴 JMP 在哪個表中尋找 DIEID 和 FCID 欄位。
Column( dtIGNITE, "DIEID" ) << Formula( <FORMULA> );</FORMULA>
或者,您可以組合 New Column() 和 Formula() 行。
希望有幫助!
回覆:執行沒有關聯表的 JMP 腳本您可能會考慮:
dt1 = New Table( "dtIgnite" );
query << Run Foreground( UpdateTable( dt1 ) );
Wait(0);
dt1 << New Column(...
將句柄分配給表然後更新它可能會給出更一致的結果。
回覆:執行沒有關聯表的 JMP 腳本我附上了可能有幫助的螢幕截圖。
我通常從編輯器視窗運行腳本。dtIGNITE 是由 SQL 表產生的表,但是當我執行腳本時,表「Baselines-Ext」將被修改,因為它在 GUI 中被列為當前資料表。
我添加了以下幾行:
dtIGNITE << Set Name ("RUNS");
Current Date Table = Data Table("RUNS");
到我的 jsl,但這並沒有解決問題。
如果 JMP 中沒有開啟其他表,則該腳本將按照編寫的方式完美運行。
我會嘗試調試選項並更新如果我發現什麼。

回覆:執行沒有關聯表的 JMP 腳本@PChemMan ,
我不確定我是否正確理解了你的問題。 如果我在這裡嘗試的方法沒有幫助,請在您的回覆中提供更詳細的解釋。
但是,做一些假設,讓我們看看您有 2 個表 - 1 個表稱為“dtIGNITE”,另一個表暫時稱為“SQLTable”。 您擔心您的腳本會對 dtIGNITE 表而不是 SQLTable 進行更改?
如果是這樣 - 您可以嘗試新增以下程式碼嗎
Current Data Table = Data Table("SQLTable"); 在執行任何操作之前。 這應該會使 SQL 產生的表成為當前表。