關閉除變數名稱清單之外的所有資料表今天,我嘗試關閉除選定數量的資料表之外的所有資料表,因為使用資料表名稱變數執行重複程序。我有三張桌子。一個是收集結果,一個是收集第一個表的無效結果,一個是使用者開啟腳本以了解要使用哪些 ID 值進行比較。我發現了一個可以關閉表的討論(它已包含在我的腳本中),但它在表名稱列表中使用帶引號的文字。由於我的用戶將為第三個表的每次迭代選擇不同的資料表,因此如何使用資料表名稱變數將其包含在列表中並在處理結束時將其保持開啟狀態?
DontClose = {CompareTable, CollectionTable, IDTable}; // Example names of tables you want to leave open
//CompareTable = "Validation Table"
//Collection Table = "Unmatched Values"
//IDTable = could be anything but I want to leave this open once the processing loop is completed
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
print( Data Table(i) << Get Name ) ;
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);回覆:關閉除變數名稱清單之外的所有資料表這可以工作,但這接近於在每個表的使用完成後為其產生一個 Close() 語句。 我試著使用一些更優雅、線條更少的東西。 我嘗試過的另一個類似選項是將所有表名放在一個列表中,並有一個保留列表進行比較,問題是用戶選擇了必須保持打開狀態的三個表之一,因此每次使用都會發生變化。 這是我使用別名表名的唯一原因。 一旦我與某人分享此訊息,他們就會更改腳本所在的表名稱,因此我寧願不在不需要的地方硬編碼資料表名稱。 這真是一個謎! 感謝您的回覆!回覆:關閉除變數名稱清單之外的所有資料表我無法發布整個腳本。 它訪問專有伺服器,我需要花費大量時間來創建匿名版本。 但你讓我覺得我沒有考慮到這一點,這就是它被掛斷的原因。 我將測試我的理論並報告!
謝謝你!回覆:關閉除變數名稱清單之外的所有資料表既然您產生了所有要銷毀的資料表,為什麼不在建立時將每個表引用插入到列表中呢? 然後,您可以在需要關閉列表時迭代列表。
回覆:關閉除變數名稱清單之外的所有資料表你能發布你的腳本嗎?
關閉已連結匯總表的表將自動關閉匯總表。
回覆:關閉除變數名稱清單之外的所有資料表天啊! 我說得太早了。 我使用此腳本測試了打開表和關閉表。
我的腳本所做的是打開兩個表,需要將其保持打開狀態才能完全運行腳本。 一個是不相等的比較目標,另一個包含 ID 清單(使用者選擇的)。 然後它從伺服器提取數據,運行大量摘要、轉置和其他數據操作,將結果複製到腳本所在的表中,並將差異複製到目標表中(兩者都需要保持開啟),然後關閉所有摘要表和在繼續下一個ID 之前從伺服器產生的表。
我不斷收到這樣的錯誤:
在「資料表」的存取或評估中找不到資料表{28},資料表/*###*/(i)
因為桌號丟了?回覆:關閉除變數名稱清單之外的所有資料表@Wendy_Murphrey這就是門票!就像我需要的那樣工作。由於該腳本可以打開或生成數百個表,因此這非常適合我的需求。
謝謝你,謝謝你,謝謝你!我每天都在 JSL 學到新東西!
回覆:關閉除變數名稱清單之外的所有資料表@guillaumebugnon我發現所有表都需要該變數集。我正在編寫的腳本會打開並生成大量表格,因此這將添加一個步驟,我認為最好將其用於不太激烈的目的。我最終希望做的是擁有 ID 清單(可能超過 200 個),並讓腳本運行一個進程來為每個 ID 產生至少 75 個摘要。雖然這可行,但溫蒂墨菲的解決方案似乎非常適合我的應用。
感謝您花時間幫我解決困境!
回覆:關閉除變數名稱清單之外的所有資料表這是一種允許您使用資料表引用的方法:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt3 = Open( Pick File( "Select File", "$DOCUMENTS" ) );
dontClose = Eval List( {dt, dt2, dt3} );
Show( dontClose );
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
If( Contains( DontClose, Data Table( i ) ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);
希望有幫助!
回覆:關閉除變數名稱清單之外的所有資料表你好,
您也可以在每個 jmp 資料表上設定一個表變數:
dt << Set Table Variable("ToClose","N");然後您可以循環並檢查該值:
For( i = N Table(), i > 0, i--,
vtoclose = Data Table(i) << Get Table Variable ("ToClose") ;
If ( Contains(vtoclose,"Y") >=1 ,
Close(Data Table(i),NoSave),
print("ToClose is not set to Y : do not close")
);
);