错误:在平台中找不到当前列当组合列切换器、数据过滤器和行状态处理函数时,我收到一条奇怪的错误消息。
随附的脚本给出了一个简化的示例(很抱歉它仍然很长)。 总而言之,该脚本:
- 使用包含具有规格限制的列的数据表(我使用“半导体能力”作为示例)
- 创建过程能力总结报告表
- 将分布输出和列切换器附加到表中
- 整理表格并将列切换器链接到分布
- 创建行更改函数来监视流程能力表的更新
- 当用户选择表中的一行时,将捕获参数列名称并将其传递到列切换器,这会更改分发平台。
这工作正常,直到源数据表被过滤,隐藏和排除不需要的行。 过程能力表更新正常,但如果我随后从表中选择一个新参数,我会看到此消息出现两次(或更多次):

分发平台最终会更新。 但是,如果用户进一步过滤,最终我会收到以下错误:

当我得到这个信息时,行状态处理程序似乎与表完全无关。
如果有人能提出解决方案或更好的方法来完成我正在做的事情,我将不胜感激!
我在 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 ! 这很有帮助。 我没想到多次重复链接平台命令会导致问题。