ソート後にテーブルを更新するにはどうすればよいですか?みなさん、こんにちは。
テーブルのソートに関して問題があります。 テーブルを日付(Date1列にある)で並べ替えたかったのですが、特定の条件が満たされた後にそれを行っています。 ただし、テーブルの並べ替えや置換は行われません。 EL_概要並べ替え後。 何かリフレッシュが必要なのでしょうか? しばらく待つ必要があると思い、遅延も設定しました。 使っていないときはテーブル(1)を置き換え、別の名前で新しいテーブルが作成されて開かれますが(望ましくありません)、このテーブルのデータは再び並べ替えられません。 ただし、その後、データはEL_概要更新されて整理されているようです。 私に足りないものを指摘していただければ幸いです。 よろしくお願いします
現在のデータ テーブル( EL_summary );
if( N rows(EL_summary) > 0, EL_summary << sort(by(:name("Date1")), Order( Ascending ), replace table(1)));
待機(1);
Re: ソート後にテーブルを更新するにはどうすればよいですか?こんにちは、オプションを使用して JSL 経由でデータテーブルを並べ替える正式な方法は何ですか? ReplaceTable()?
前に説明したように、開いているレポートがある場合、スクリプトは次のエラー メッセージを表示してクラッシュします。

...グラフがデータテーブル内の順序に依存しない場合でも、次のようになります。
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
gb = dt << Graph Builder(
Size( 437, 413 ),
Graph Spacing( 4 ),
Variables( X( :height ), Y( :weight ), Overlay( :sex ) ),
Elements( Points( X, Y, Legend( 1 ) ), Smoother( X, Y, Legend( 2 ) ) )
);
dt<< Sort( By( :height ), Replace Table, Order( Ascending ));
テキストを次のようなものに置き換えてはどうでしょうか。
残念ながら、Jmp の現在のバージョンでは、開いているレポートを含むテーブルを並べ替えることはできません。
Jmp は、何らかの可能性があるため、既存のテーブルを置き換えることはできません...うーん、ご存知のように、レポート ウィンドウは以前の順序に依存する可能性があります。 残念ながら、それを確認するオプションはなく、無視するオプションもありません。 したがって、スクリプトはここで停止します。

Re: ソート後にテーブルを更新するにはどうすればよいですか?OK、新しいデータテーブルを非表示にすることができました。 そのデータテーブルは現在のデータテーブルだったので、次を使用してその可視性を無効にしました
Current Data Table() << ShowWindow( 0 );
皆様のご支援に感謝いたします。 よろしくお願いします。
Re: ソート後にテーブルを更新するにはどうすればよいですか?これにはいくつかの異なる方法で対処できます。
データ テーブルのソートを妨げている出力をジャーナルに移動して表示し、元の表示を削除すると、ソートが可能になります。
新しいデータ テーブルが表示されないように、非表示またはプライベートの新しいデータ テーブルを作成することもできます。Scripting Index のデータ テーブルのサブセット化で、Invisible または Private オプションを探します。
Re: ソート後にテーブルを更新するにはどうすればよいですか?こんにちは、ご提案ありがとうございます!
GUI を 1 つ作成しましたが、リスト ボックスから 1 つの項目を選択した後に並べ替えを行う必要があります。 その後、特定の画像を、ソートされた値に基づいた順序でこの GUI に表示する必要があります。 実際、JMP は問題の原因を示す有用なログ情報を提供していません。 ソート後に作成された新しい (そして望ましくない) データテーブルを非表示または非表示にする方法はありますか? それは何らかの回避策になるでしょう。
Re: ソート後にテーブルを更新するにはどうすればよいですか?やあ、
このコードは、グラフが開いていない場合には期待どおりに実行されました。
Untitled = data table("Untitled.jmp");
if( N rows(Untitled) > 0, Untitled << sort(by(:name("Column 1")), Order( Ascending ), replace table(1)));
ただし、グラフを開いている場合、並べ替えは機能しません。
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending ), replace table(1)));
</DISTRIBUTION>
ログ ファイルを見ると、次のことがわかります。
JMP cannot replace the existing table because there are report windows that depend on the previous ordering.
ただし、replace table を削除すると、エラーなしで実行されますが、ソートされた行を含む新しいデータテーブルが起動されますが、これは望ましくありません。
Untitled <<DISTRIBUTION> 0, Untitled << sort(by(:name("Column 1")), Order( Descending )));</DISTRIBUTION>
したがって、ログ ファイルをチェックして、情報があるかどうかを確認できます。 依存するグラフやテーブルを開いている場合は、スクリプトのロジックを再考する必要があるかもしれません。 たとえば、依存するテーブルやグラフを作成する前に再ソートすることは可能ですか。
Re: ソート後にテーブルを更新するにはどうすればよいですか?データテーブルは前のテーブルにインク付けされているため、変更できませんか?Re: ソート後にテーブルを更新するにはどうすればよいですか?Try を使用してエラーをキャッチし、それに応じてエラーを処理します。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(437, 413),
Graph Spacing(4),
Variables(X(:height), Y(:weight), Overlay(:sex)),
Elements(Points(X, Y, Legend(1)), Smoother(X, Y, Legend(2)))
);
Try(
dt << Sort(By(:height), Replace Table, Order(Ascending));
,
If(Starts With(exception_msg[1], "JMP cannot replace the existing table because there are report windows"),
dt1 = dt << Sort(By(:age), Order(Ascending)); // will create new table
/*
// if you wish to just keep one, order to create new, close old and rename new
old_name = dt << get name;
Close(dt, no save)
dt1 << set name(old_name);
dt = dt1;
*/
);
);
JMP の使用 > データの再構成 > データ テーブルの並べ替え
テーブルの置換
ソートされた値を含む新しいテーブルを作成する代わりに、元のデータ テーブルをソートされたテーブルに置き換えます。 元のテーブルから生成された開いているレポート ウィンドウがある場合、このオプションは使用できません。
Re: ソート後にテーブルを更新するにはどうすればよいですか?うーん、この回避策を使えばスクリプトはクラッシュしません...
一方: データはソートされませんが、新しいテーブルが生成されます:(
現時点では、次のようなものを好みます。
Try (sort,
Caption("Sorry, not possible to sorting the table, please close all reports and sort manually");stop());
将来的には、次のようなことが起こることを願っています
データ テーブル: レポート (およびその他のオプション) を取得します。
Try(
sort,
If( New Window( "ask User", ... ),
myAffectedReports = dt << get reports with ordering issues();
myAffectedReports << close window;
sort;
)
)
また
sort(..., ignoreEffectOnReports())
また
sort(..., closeReportsWithOrderingIssue());
Re: ソート後にテーブルを更新するにはどうすればよいですか?データテーブルをソートするアドインを作成したいと考えています。
アドインの実行内のどこかで Try(sort, error message) を実行する代わりに、アドインを開始する前にすべてのレポートを閉じる必要があることを最初にユーザーに通知したいと思います。
Jmp17 でこれを行うにはどうすればよいですか?
Re: ソート後にテーブルを更新するにはどうすればよいですか?1 つのオプション:
- << Get Window List を使用して、開いているすべてのウィンドウへの参照を取得します (必要に応じて、これを Type("Reports") に制限できます)
- そのリストをループし、並べ替えられているデータ テーブルに依存するリストがあるかどうかを確認します (レポート ウィンドウの名前または << Get Data table を使用できるはずです。 レポートがデータテーブルに属している場合は、リストに追加します
- リストに項目がある場合は、ユーザーにメッセージを表示します
Re: ソート後にテーブルを更新するにはどうすればよいですか?とてもうまくいきました、ありがとう:)
closeMyReports = Function( {dt},
{default local},
AllmyReports = {};
myReports = Get Window List( Type( "Reports" ) );
For Each( {rep}, myReports,
Try(
myList = (rep << Xpath( "//OutlineBox" )) << get scriptable Object();
myDTs = Transform Each( {scriptableObject}, myList, If( Is Empty( scriptableObject ), ., scriptableObject << Get Data Table() ) );
If( Contains( myDTs, dt ),
Insert Into( AllmyReports, rep )
);
)
);
If( N Items( AllmyReports ) > 0,
If(
ex = New Window( "",
<<TYPE></TYPE>
編集:スクリプトは、多くのデータ テーブルを含むより複雑なレポートもチェックするようになりました。
Re: ソート後にテーブルを更新するにはどうすればよいですか?次のステップ: コマンドはありますか:
dt << get linked subsets()
