從篩選的錶框中選擇行時如何避免錯誤?我正在運行 JMP 17.1,並且下面顯示的腳本可以正常工作,這要歸功於@jthi幫助。當我執行該腳本時,我會在視窗中看到一個 Big Class.jmp 的表格框,我可以選擇一行,它會傳回所選行的高度和重量值。在我的現實應用程式中,我有一個更大的表,我想透過右鍵單擊視窗並選擇“過濾位置...”來過濾該表。當我在錶框中獲取過濾後的表時,有時選定的行返回數據,有時返回錯誤,提示“訪問或評估'hvals[/*###*/sel], hvals[ 時出現下標問題” /*###*/sel]」。在下面的範例中,我右鍵單擊 Big Class Table 方塊並按性別篩選 == F。
關於如何檢索子集錶框所有行的資料有什麼想法嗎?
names default to here(1);
//run this now
dt = open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(row() <= 10) << get as report;
tb = rpt[Table Box(1)];
tb << Set Selectable Rows();
tb << set row change function( Function( {this}, sel = this << get selected rows ) );
sel = tb << get row change function;
nw = new window("test",
v list box(
outline box("Big Class", rpt),
text box("Click 'OK' to choose height and weight"),
Button box("OK",
hvals = tb[NumberColBox("height")] << get;
wvals = tb[NumberColBox("weight")] << get;
ht = hvals[sel][1];
wt = wvals[sel][1];
print(sel, ht,wt);
)
)
);以下是原始表(Big Class 的前 10 行)的圖像、按性別過濾並選擇首次發生錯誤的行後的 Big class 表以及錯誤訊息。請注意,腳本適用於已篩選表的前 5 行,但不適用於第 6 行或第 7 行。
自動化和腳本編寫回覆:從篩選的錶框中選擇行時如何避免錯誤?似乎是一個錯誤,您無法獲取過濾行之後的那些行
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = tb << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
tb << Set Selected Rows([2]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Set Selected Rows([6]);
sel = tb << get selected rows;
show(sel);
wait(1);
tb << Reset Filter;
sel = tb << get selected rows;
show(sel);
回覆:從篩選的錶框中選擇行時如何避免錯誤?我建議您聯絡 JMP 支援人員(如果您願意,我也可以這樣做)。 很可能有很多不同的解決方法,但這裡有一個似乎可行的方法(使用clone box())。
Names Default To Here(1);
//run this now
dt = Open("$sample_data\big class.jmp", invisible);
rpt = dt << select where(Row() <= 10) << get as report;
Close(dt, no save);
tb = rpt[Table Box(1)];
tb << Set Selectable Rows(1);
nw = New Window("test",
V List Box(
Outline Box("Big Class", rpt),
Text Box("Click 'OK' to choose height and weight"),
Button Box("OK",
hvals = tb[Number Col Box("height")] << get;
wvals = tb[Number Col Box("weight")] << get;
sel = (tb << clone box()) << get selected rows;
ht = hvals[sel][1];
wt = wvals[sel][1];
Print(sel, ht, wt);
)
)
);
wait(1);
tb << Filter Where(:sex == "F");
我不確定克隆的框是否存儲在某個地方,因此最好將其存儲到變數中,獲取選定的行,然後將該變數設為缺失。
回覆:從篩選的錶框中選擇行時如何避免錯誤?我會將此事報告給 JMP 支援人員。@jthi ,非常感謝您的所有幫助。
回覆:從篩選的錶框中選擇行時如何避免錯誤?當您收到支援人員的回覆時,如果他們有任何解決方法,請在此處新增。 此外,最好也發佈工單 ID(如果有人有類似問題並連結到此主題,JMP 員工可以找到該工單 ID 並可能檢查狀態)。
回覆:從篩選的錶框中選擇行時如何避免錯誤?JMP 支援票是: TS-00063284