フィルターされたテーブル ボックスから行を選択するときのエラーを回避するにはどうすればよいですか?私はJMP 17.1を実行しており、以下に示すスクリプトは次のおかげで機能します。 @jthiヘルプ。スクリプトを実行すると、ウィンドウに Big Class.jmp のテーブル ボックスが表示され、行を選択すると、選択した行から身長と体重の値が返されます。実際のアプリケーションでは、ウィンドウ内を右クリックして [Filter Where...] を選択してフィルタリングしたい、さらに大きなテーブルがあります。テーブル ボックスでフィルター処理されたテーブルを取得すると、選択した行がデータを返す場合と、「'hvals[/*###*/sel]、hvals[ のアクセスまたは評価における添え字の問題」というエラーが返される場合があります。 /*###*/sel]」。以下の例では、[大きなクラス テーブル] ボックスを右クリックし、性別 == 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 クラス テーブル、およびエラー メッセージの画像です。このスクリプトは、フィルタリングされたテーブルの最初の 5 行では機能しますが、行 6 または 7 では機能しないことに注意してください。
自動化とスクリプト作成Re: フィルターされたテーブル ボックスから行を選択するときのエラーを回避するにはどうすればよいですか?フィルタリングされた行の後にある行を取得できないバグのようです
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);
Re: フィルターされたテーブル ボックスから行を選択するときのエラーを回避するにはどうすればよいですか?これについては、JMP サポートに連絡することをお勧めします (ご希望であれば、私でも対応させていただきます)。 おそらくかなりの数の異なる回避策がありますが、ここではうまくいくと思われる回避策を 1 つ示します (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");
そのクローンボックスがどこかに保存されるかどうかはわかりません。そのため、それを変数に保存し、選択された行を取得して、その変数を欠落に設定する方が良いかもしれません。
Re: フィルターされたテーブル ボックスから行を選択するときのエラーを回避するにはどうすればよいですか?これを JMP サポートに報告します。@jthi 、いつもお世話になりありがとうございます。
Re: フィルターされたテーブル ボックスから行を選択するときのエラーを回避するにはどうすればよいですか?サポートから応答があった場合、回避策がある場合は、ここに追加してください。 また、チケット ID も投稿することをお勧めします (誰かが同様の質問をしていて、このトピックにリンクされている場合、JMP スタッフはそのチケット ID を検索し、場合によってはステータスを確認することができます)。
Re: フィルターされたテーブル ボックスから行を選択するときのエラーを回避するにはどうすればよいですか?JMP サポート チケットは次のとおりです。 TS-00063284