別のテーブルのデータ列に制限を設定する必要があります。その特定の制限が設定されていない場合、そのテーブルには「0」があります。このスクリプトは、制限がない場合、または両方の制限がある場合に制限を読み込むのに問題なく機能しますが、制限が 1 つしかない場合は機能しません。2番目の制限を「0」に設定したままにして、両方を入れます。
//set limits
If( db_Tests:MinLimit[TestRow[1]] != 0 | db_Tests:MaxLimit[TestRow[1]] != 0,
Eval(
Substitute(
Expr(
col << set property( "Spec Limits", {LSL( _L ), USL( _U ), Show Limits( 1 )} )
),
Expr( _L ), db_Tests:MinLimit[TestRow[1]]
,
Expr( _U ), db_Tests:MaxLimit[TestRow[1]]
)
)
);一つ一つ入れてみました。 LSL が「0」でない場合は LSL を更新し、USL が「0」でない場合はそれを更新します。それに関する問題は、両方に制限がある場合、最初のものを上書きすることです。言い換えれば、その方法は、LSL と USL の両方が存在する場合を除いてすべてのケースで機能しますが、両方が存在する場合は最初のものを入れ、次に最初のものを入れるとなくなります。これについて何か助けていただければ幸いです。 ありがとう
次のような方法で 0 の値を欠落に設定するのはどうですか:
Names Default To Here(1);
dt = New Table("Untitled 2",
Add Rows(2),
Compress File When Saved(1),
New Column("col", Numeric, "Continuous", Format("Best", 12), Set Values([1, 2]))
);
//both
minVal = 1;
maxVal = 2;
Eval(
Substitute(
Expr(
dT:col << set property( "Spec Limits", {LSL( _L ), USL( _U ), Show Limits( 1 )} )
),
Expr( _L ), If(minVal == 0, ., minVal)
,
Expr( _U ), If(maxVal == 0, ., maxVal)
)
);
Show(dt:col << Get Property("Spec Limits"));
//missing maxval
minVal = 1;
maxVal = .;
Eval(
Substitute(
Expr(
dT:col << set property( "Spec Limits", {LSL( _L ), USL( _U ), Show Limits( 1 )} )
),
Expr( _L ), If(minVal == 0, ., minVal)
,
Expr( _U ), If(maxVal == 0, ., maxVal)
)
);
Show(dt:col << Get Property("Spec Limits"));
//maxval 0
minVal = 1;
maxVal = 0;
Eval(
Substitute(
Expr(
dT:col << set property( "Spec Limits", {LSL( _L ), USL( _U ), Show Limits( 1 )} )
),
Expr( _L ), If(minVal == 0, ., minVal)
,
Expr( _U ), If(maxVal == 0, ., maxVal)
)
);
Show(dt:col << Get Property("Spec Limits"));