使用列存储值设置列的规格限制大家好,
我将 csv 文件导入 JMP 以分别获取数据表(指定为 dt0)和规格表(指定为 dt1)。 我想知道在规格表 (dt0) 中获取规格并在数据表 (dt0) 中设置列的规格限制。
我发现无法成功设置规格的问题:

这是我的代码:
名字默认到这里( 1个);
文件 =选择文件(
“选择 CSV 文件” ,
“$下载” ,
{ “JMP 文件|jmp;jsl;jrn” , “所有文件|*” },
1个,
0 ,
“”
);
dt0 =打开(
文件,
导入设置(
行尾(CRLF,CR,LF),
字段结束(逗号,CSV( 0 ) ),
带引号( 1个),
使用撇号作为引号( 0 ),
使用区域设置( 0 ),
扫描整个文件( 1个),
将空列视为数字( 0 ),
压缩数字列( 0 ),
压缩字符列( 0 ),
压缩允许列表检查( 0 ),
标签( 1个),
列名开始( 2个),
数据开始( 8个),
要读取的行( “全部” ),
年份规则( “20xx” )
)
);
dt1 =打开(
文件,
导入设置(
行尾(CRLF,CR,LF),
字段结束(逗号,CSV( 0 ) ),
带引号( 1个),
使用撇号作为引号( 0 ),
使用区域设置( 0 ),
扫描整个文件( 1个),
将空列视为数字( 0 ),
压缩数字列( 0 ),
压缩字符列( 0 ),
压缩允许列表检查( 0 ),
标签( 1个),
列名开始( 2个),
数据开始( 5个),
要读取的行( 2个),
年份规则( “20xx” )
)
);
为了(我= 13 , 我<= N列(dt0), 我++,
柱子(dt0,i)<<数据类型(数字);
柱子(dt0,i)<<造型类型( “连续的” );
);
为了(我= 13 , 我<= N列(dt1), i++,
柱子(dt1,i)<<数据类型(数字);
柱子(dt1,i)<<造型类型( “连续的” );
);
为了(我= 13 , 我<= N列(dt1), i++,
温度USL=列储值(dt1,我, 1个); //将dt1规格表中的规格分配给'tempUSL'和'tempLSL'
tempLSL=列储值(dt1,我, 2个);
评价(
评估表达式(
柱子( dt0,i ) <<设置属性(
“规格限制” ,
{LSL(表达式( tempLSL ) ), USL(表达式( tempUSL ) ), 显示限制( 1个)}
)
)
);
);
有什么建议可以解决这个问题吗? 谢谢
回复:使用列存储值设置列的规格限制很好的建议,真的很有帮助。 非常感谢你,拜伦!
回复:使用列存储值设置列的规格限制我看到你在做什么,我不得不说你的代码看起来非常好。 也很复杂。
通过 JMP 中已有的脚本平台,还有其他几种方法可以完成同样的事情。
这里有几个例子:
这个使用过程筛选平台
Names Default To Here( 1 );
dt1 = Open( "$SAMPLE_DATA/Cities.jmp" );
dt2 = Open( "$SAMPLE_DATA/CitySpecLimits.jmp" );
dt1 << Process Screening(
Y( :OZONE, :CO, :SO2, :NO ),
Use Limits Table(
1,
dt2,
Process Variables( :Column 1 ),
LSL( :_LSL ),
USL( :_USL ),
Target( :_Target ),
Go
)
);
这个使用过程能力平台
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
obj = dt << Process Capability(
Process Variables( :OZONE, :CO, :SO2, :NO ),
Spec Limits(
Import Spec Limits(
"$SAMPLE_DATA/CitySpecLimits.jmp"
)
)
);
在此示例中,将打开一个对话框以允许用户选择规格限制表
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
obj = dt << Manage Spec Limits(
Y( dt << Get Column Group( "Processes" ) )
);
这种利用平台特性的基础代码也更容易维护。
希望这有用,
干杯,
乙
回复:使用列存储值设置列的规格限制大家好,
我通过使用这些代码找到了解决方案:
Eval(
Eval Expr(
tempUSL=Col Stored Value(dt1, Expr(i), 1)
)
);
Eval(
Eval Expr(
tempLSL=Col Stored Value(dt1, Expr(i), 2)
)
);
谢谢
回复:使用列存储值设置列的规格限制如果直接给'tempUSL'和'tempLSL'分配一个数字,它就可以工作。
但我需要从规格表中分配规格限制。
Names Default To Here( 1 );
Files = Pick File(
"Select CSV File",
"$Downloads",
{"JMP Files|jmp;jsl;jrn", "All Files|*"},
1,
0,
""
);
dt0 = Open(
Files,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 2 ),
Data Starts( 8 ),
Lines To Read( "All" ),
Year Rule( "20xx" )
)
);
dt1 = Open(
Files,
Import Settings(
End Of Line( CRLF, CR, LF ),
End Of Field( Comma, CSV( 0 ) ),
Strip Quotes( 1 ),
Use Apostrophe as Quotation Mark( 0 ),
Use Regional Settings( 0 ),
Scan Whole File( 1 ),
Treat empty columns as numeric( 0 ),
CompressNumericColumns( 0 ),
CompressCharacterColumns( 0 ),
CompressAllowListCheck( 0 ),
Labels( 1 ),
Column Names Start( 2 ),
Data Starts( 5 ),
Lines To Read( 2 ),
Year Rule( "20xx" )
)
);
For(i=13, i<=N Cols(dt0), i++,
Column(dt0,i)<<DATA type=""></DATA>