実行時に変数を作成するこんにちは、
実行時に変数を作成する方法はありますか(アプリを実行する前に、必要な変数の数とその種類がわかりません)。
私が取り組んでいる解決策:
1.ユーザーはjmp / excelデータテーブルを選択します
2.ユーザーは、テーブルのフィルタリングに使用する列を選択します(金額と名前が不明)
3.Theアプリは、選択された列ごとにリストボックスまたはラジオボックスを作成し、その列の個別の値を入力します。
4.ユーザーがフィルタリングのために値を選択した後、アプリはフィルタリングを実行し、フィルタリングされたテーブルを返します
そのため、可能であれば、各リストボックスに対して実行時に意味のある名前で変数を作成する必要があります。
ありがとうございました、
トム
実行時に変数を作成するJSLを使用すると、独自のバージョンのデータフィルタを確実に作成できます。また、自分の環境に最適と思われる形式で表示することもできます。 構築する必要があるすべての例外処理によって、タスクがかなり複雑になることをお伝えします。 以下は非常におおまかなスクリプトで、ユーザーが処理するテーブルとテーブル内の列を選択できる環境で変数を作成する例を示します。 "Big Class"というサンプルデータテーブルを使用することにしましたが、どのテーブルでもコードを処理できます。"nameList"、"handleList"、およびCNTListという名前で作成されたリストには、選択された列と生成されたリストボックスへのポインタが保存されます。生成されたリストボックスの1つに。 さて、私はこれがあなたが欲しいディスプレイを作成するために使うことができる可能性のある方向性の一つに過ぎないことを明確に認めます。 また、フィルタリング対象の選択された列の削除、数値フィルタの処理方法など、例外コードの多くは、比較で "And"または "Or"になっています。...対処する必要があるすべてのアイテム。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
Current Data Table( dt );
CNT = 0;
// Create lists to handle processing
nameList = {};
handleList = {};
CNTList = {};
// Create the new window
nw = New Window( "Example",
V List Box(
Text Box( "Data Table Columns" ),
Spacer Box( size( 0, 10 ) ),
clb = Col List Box(
dt << get name,
all,
max selected( 1 ),
Sel = clb << get selected;
If( N Items( Sel ) > 0,
CNT++;
Insert Into( nameList, Sel[1] );
Eval( Parse( "summarize(dt,bygp=by(:" || Char( Sel[1] ) || "))" ) );
lb = List Box( bygp, Eval( Parse( "SelectionChoice=" || Char( CNT ) || ";" ) ) );
Insert Into( handleList, lb );
Insert Into( CNTList, CNT );
HLB << append( lb );
);
),
HLB = H List Box()
)
);実行時に変数を作成するジムありがとうございます。
データフィルタオプションを使用せずに、リストボックスとラジオボックスを使用して独自のGUIを開発したいと思います。
ユーザーはどの列をフィルタリングに使用するかを制御することができます - 私は彼に "User Properties" jsl内の列名を管理させるでしょう。
例えばdesiredColumnsList = {"ColumnA"、"ColumnD"} - ユーザーによって変更されます。
次に、彼が選択した各列に対して、フィルタリング用のリストボックスを作成します。
そのようにいくつかの提案はありますか?
ありがとうございます。
トム
実行時に変数を作成するコードを記述しなくても、組み込みの「データフィルタ」を使用して必要なことを実行できます。 目的のデータテーブルを開き、プルダウンメニューに進むだけです。
行==>データフィルタ
その後、任意の列またはすべての列を選択してフィルタリングできます。
最後に、フィルタを選択してその値を選択したら、赤い三角形に移動して[サブセットの表示]を選択することによって、新しいサブセットデータテーブルを作成できます。
このアクションは以下のコードでも記述できます。
Names Default To Here( 1 );
// Open the desired file
path=pick file();
dt=open(path);
// Get all of the columns in the data table
colList = dt << get column names();
// Build the code required to open a Data Filter
// That has all columns available for filtering
TheExpr =
"dt << Data Filter(
Location( {59, 59} ),
Auto clear( 0 ),
Mode( Show( 1 ), Include( 1 ) ),
Add Filter( columns(";
TheExpr = TheExpr || ":" || colList[1];
For( i = 2, i <= N Items( colList ), i++,
TheExpr = TheExpr || ", :" || colList[i]
);
TheExpr = TheExpr || ") ) );";
// Execute the code that was built
Eval( Parse( TheExpr ) );