錯誤:在平台中找不到目前列當組合列切換器、資料過濾器和行狀態處理函數時,我收到一個奇怪的錯誤訊息。
隨附的腳本給出了一個簡化的範例(很抱歉它仍然很長)。 總而言之,該腳本:
- 使用包含具有規格限制的列的資料表(我使用“半導體能力”作為範例)
- 建立流程能力總結報告表
- 將分佈輸出和列切換器附加到表中
- 整理表格並將列切換器連結到分佈
- 建立行更改函數來監視流程能力表的更新
- 當使用者選擇表中的一行時,將捕獲參數列名稱並將其傳遞到列切換器,這會變更分發平台。
這工作正常,直到來源資料表被過濾,隱藏和排除不需要的行。 過程能力表更新正常,但如果我隨後從表中選擇一個新參數,我會看到此訊息出現兩次(或更多):

分發平台最終會更新。 但是,如果用戶進一步過濾,最終我會收到以下錯誤:

當我得到這個資訊時,行狀態處理程序似乎與表完全無關。
如果有人能提出解決方案或更好的方法來完成我正在做的事情,我將不勝感激!
我在 MacOS 上使用 JMP 17.2。
數據探索和視覺化回覆:錯誤:在平台中找不到目前列我做了一些小的改變*) - 必須檢查什麼真正解決了問題 - 是嗎?
- 使用分佈報告的列切換器並透過報告層取得句柄
- 定義設定表選擇作為一個帶有 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>
回覆:錯誤:在平台中找不到目前列你好@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
回覆:錯誤:在平台中找不到目前列說明:
如果
cs << link platform( dist1 );
是其一部分設定表選擇它將在每次表更新時執行。
但它是這樣設定的:NPN1將被任何其他列替換。 如果此時在分發平台中使用 :NPN1,則此方法有效。 如果沒有,您將看到一條錯誤訊息。
回覆:錯誤:在平台中找不到目前列謝謝你們倆@hogi和@SDF1 ! 這很有幫助。 我沒想到多次重複連結平台命令會導致問題。