テーブルを選択してから列を選択しますこんにちは。私は JMP と JSL を使用するのが初めてで、テーブルを 1 つ選択し、次に 2 つの列を選択して、それに対して何かを行うスクリプトを作成するのに苦労しています。
ここに例があります
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> 0,
Print("Table selected: "||dtName[1]),
Print("No table selected")
)
);
/* Here I tried several options like
current data table (dt);
dt << get data table;
and other but I cannot find what fits well */
xvar = .;
yvar = .;
win = New Window( "Compared Values",
<<MODAL></MODAL></MODAL>この例では、すでに開いているテーブルの 1 つを選択し、2 つの列を選択して、単純なプロットを実行できる単純なスクリプトを試しています。 ただし、選択した特定のテーブルをプログラムに認識させることができません。
将来的には、同時にいくつかのテーブルを操作し、結果を取得するために別のテーブルから別の列を選択する必要があるでしょう。 このスクリプトは簡単に始めることができると思いました。 最初のボックスで選択しているテーブルを選択できない理由、またはそれを改善する方法について、スクリプトの解決策とともに簡単な説明を誰かが提供していただければ、非常に感謝します。
ありがとう!
自動化とスクリプト作成結果の共有と伝達Re: テーブルを選択してから列を選択しますモーダル ウィンドウについては、スクリプト ガイドを読むことをお勧めします。正直に言って、スクリプト ガイド全体を読むことをお勧めします。
ヘルプ==>JMPドキュメントライブラリ
Re: テーブルを選択してから列を選択しますありがとうございます。あなたの例で私の質問のほとんどが明確になりました。 私の主な問題は、コードを機能させるためにテーブルをどのように指定するかでしたが、これだけさまざまなオプションがすべて表示されたので、どこでエラーが発生したかが非常に明確になりました。
もう一つ、「」と言われると、モーダル ウィンドウには、[OK] ボタンと [キャンセル] ボタンを備えたデフォルトのアクションがいくつかあります。」について詳しく知りたい場合は、何をお勧めしますか? スクリプト ガイドは持っていますが、読んでいません。そこで見つかると思いますか? それとも他のソースを提案しますか?
ありがとう!
Re: テーブルを選択してから列を選択しますこんにちは、
元のスクリプトで追加の問題が見つかりましたが、解決したと思われます (例: 列リスト ボックス内のデータ テーブルへの誤った参照)
以下に私の解決策を示しますが、コーディングの観点からはまだ少し不格好かもしれません。
Names Default to Here( 1 );
show (dt);
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL> require the user to select two variables before clicking OK
Text Box( " Select test values. " ),
H List Box(
Text Box( "Select Variable " ),
x = Col List Box(
Data Table (dtxt), // data table reference > UPDATED the call to selected data table
all, // display all columns from the data table
xvar = (x << Get Selected)[1];
// get the name of the selected column before the window closes
Show( xvar );
),
Text Box( "Select ID" ),
y = Col List Box(
Data Table (dtxt), //> UPDATED the call to selected data table
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
Data Table (dtxt) << Graph Builder( // Added specific call to the seleted data table
Show Control Panel( 0 ),
Show Legend( 0 ),
Show Title( 1 ),
Variables( X( as column (xvar) ), Y( As Column (yvar) ) ),
Elements( Points( X, Y, Legend( 6 ) ) )
);</MODAL>Re: テーブルを選択してから列を選択しますモーダル ウィンドウには、[OK] ボタンと [キャンセル] ボタンを備えたデフォルトのアクションがいくつかあり、これにより、発生していると思われるコードが台無しになる可能性があります。デフォルトのアクションを採用し、コードに簡単な調整を加えて希望どおりにする方が良いと思います。ここでは、コードのテーブル選択部分を変更して、選択したデータ テーブルを現在のデータ テーブルとして設定し、変数 "dt" をデータ テーブルへのポインタとして設定します。
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>
@ティエリー_S問題を解決するためにリストを使用するという提案は良い提案です。ただし、私は少し違うやり方をします。名前だけでなく、データ テーブルへの完全な参照をリストに保存します。
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, data table(DataTable(t) << getName));
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>Re: テーブルを選択してから列を選択しますありがとうございます。でも問題は解決しません。 実際、私は以前にこのようなスクリプトを使用していましたが、列リスト ボックスが選択したデータ テーブルに列のリストを更新することを管理できなかったため、物事が複雑になり始めました。 おそらく私の問題はコードのその部分にあるのでしょうか?Re: テーブルを選択してから列を選択しますこんにちは、
dtlbの出力をdtに代入するサブスクリプトを作成すると複雑なことになりそうです。
次のバリエーションの方がうまく機能するのではないかと思います (「OKScript」はもう必要ありません)
Names Default to Here( 1 );
// Make list of current tables
dtNames = {};
For(t=1, t<=NTable(), t++,
InsertInto(dtNames, DataTable(t) << getName);
);
// Select the table
nw = New Window("Test", <<MODAL></MODAL>