エラー: 現在の列がプラットフォームで見つかりませんでした列スイッチャー、データ フィルター、行状態ハンドラー関数を組み合わせると、奇妙なエラー メッセージが表示されます。
添付のスクリプトは、簡略化された例を示しています (それでも非常に長いことをお詫びします)。 要約すると、スクリプトは次のようになります。
- 仕様制限のある列を含むデータ テーブルを使用します (例として「半導体能力」を使用しています)
- プロセス能力概要レポートテーブルを作成します
- ディストリビューション出力と列スイッチャーをテーブルに追加します。
- テーブルを整理し、列スイッチャーをディストリビューションにリンクします。
- 行変更関数を作成して、プロセス能力テーブルの更新を監視します。
- ユーザーがテーブル内の行を選択すると、パラメーターの列名が取得されて列スイッチャーに渡され、ディストリビューション プラットフォームが変更されます。
これは、ソース データ テーブルがフィルタリングされ、不要な行が非表示または除外されるまでは正常に機能します。 工程能力テーブルは正常に更新されましたが、テーブルから新しいパラメータを選択すると、次のメッセージが 2 回 (またはそれ以上) 表示されます。

配布プラットフォームは最終的に更新されます。 ただし、ユーザーがさらにフィルタリングを行うと、最終的に次のエラーが表示されます。

これを取得すると、行状態ハンドラーがテーブルと完全に関連付けられていないように見えます。
誰かが修正案、または私がやっていることのより良い方法を提案できれば幸いです。
MacOS で JMP 17.2 を使用しています。
データの探索と視覚化Re: エラー: 現在の列がプラットフォームで見つかりませんでしたいくつかの小さな変更を加えました *) - 実際に何が問題を修正したかを確認する必要があります - 修正されましたか?
- 分布レポートの列スイッチャーを使用し、レポート レイヤー経由でハンドルを取得します
- 定義するsetUpTableSelect 1 つの引数を持つ関数として、からの関数呼び出しとして直接使用できます。行状態ハンドラーの作成
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
dt << clear column selection() << clear select();
dt << Data Filter(
Mode( Select( 0 ), Include( 1 ) ),
Add Filter( columns( :lot_id ), Display( :lot_id, N Items( 13 ) ) )
);
colList = {:NPN1, :PNP1, :PNP2, :NPN2, :PNP3};
Eval(
Eval Expr(
win1 = New Window( "Parametric Test Summary Report",
pc = dt << Process Capability(
Process Variables( Expr( colList ) ),
Moving Range Method( Average of Moving Ranges ),
Capability Box Plots( 0 ),
Within Sigma Summary Report( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Process Performance Plot( 0 ),
Automatic Recalc( 1 ),
SendToReport(
Dispatch(
{"Within Sigma Capability Summary Report"},
"",
TableBox,
{Sort By Column( 14, 1 )}
)
)
),
tb = Text Box(
" Parameter distribution will appear below here. Select a row to show distribution for that parameter. \!N",
<<SET wrap=""> 1,
Throw( "Only select a single row" ),
Show( col1 = dt << get selected columns() );
cs << set current( Char( col1[1] ) );
);
dt << clear column selection();
)
);
);
setUpTableSelect(1);
rs = dt << make row state handler( setUpTableSelect );</SET>
Re: エラー: 現在の列がプラットフォームで見つかりませんでしたこんにちは@matth1 、
これがなぜ機能するのか完全にはわかりませんが、コードに若干の変更を加え、リンク プラットフォーム呼び出しを setUpTableSelect 呼び出しの外側、新しいウィンドウを含む Epxr() 内に移動しました (ただし、新しいウィンドウ呼び出し内ではありません)。 。 これにより、ロット間の切り替え時にデータ フィルターが正しく適用され、エラーが回避されるようです。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
dt << clear column selection() << clear select();
dt << Data Filter( Mode( Select( 0 ), Include( 1 ) ), Add Filter( columns( :lot_id ), Display( :lot_id, N Items( 13 ) ) ) );
colList = {:NPN1, :PNP1, :PNP2, :NPN2, :PNP3};
setUpTableSelect = Expr(
pct = Report( pc )[Table Box( 1 )];
pct << set click sort( 1 );
//cs << link platform( dist1 );
Try( pct[Number Col Box( "Cpm" )] << delete( 1 ) );
Wait( 0 );
pct << set height( 250 );
win1 << move window( 0, 0 );
pct << set row change function(
Function( {this},
selRow = this << get selected rows();
If( N Items( selRow ) > 1,
Throw( "Only select a single row" ),
Show( col1 = dt << get selected columns() );
cs << set current( Char( col1[1] ) );
);
dt << clear column selection();
)
);
);
WinExpr = Expr(
win1 = New Window( "Parametric Test Summary Report",
pc = dt << Process Capability(
Process Variables( Eval( colList ) ),
Moving Range Method( Average of Moving Ranges ),
Capability Box Plots( 0 ),
Within Sigma Summary Report( 1 ),
Goal Plot( 0 ),
Capability Index Plot( 0 ),
Process Performance Plot( 0 ),
Automatic Recalc( 1 ),
SendToReport( Dispatch( {"Within Sigma Capability Summary Report"}, "", TableBox, {Sort By Column( 14, 1 )} ) )
),
tb = Text Box(
" Parameter distribution will appear below here. Select a row to show distribution for that parameter. \!N",
<<SET wrap=""></SET>お役に立てれば!、
DS
Re: エラー: 現在の列がプラットフォームで見つかりませんでした説明:
もし
cs << link platform( dist1 );
の一部ですsetUpTableSelectテーブルが更新されるたびに実行されます。
しかし、それは次のように設定されています:NPN1他の列に置き換えられます。 これは、現時点で :NPN1 が配信プラットフォームで使用されている場合にのみ機能します。 そうでない場合は、エラー メッセージが表示されます。
Re: エラー: 現在の列がプラットフォームで見つかりませんでしたあなたがた両方に感謝します@ほぎそして@SDF1 ! それは役に立ちました。 link platform コマンドを複数回繰り返すと問題が発生するという考えはありませんでした。