ハウディ、
そのため、今日、データテーブルで数式が更新されないという問題があります。
たくさんの測定値がある大きなテーブルがあります。 データテーブル変数に含まれる仕様を評価するための数式を列に設定するスクリプトがあります。 これらの式は次の方法で生成されます。
Eval( Eval Expr(Column(Concat(columnName," Spec"))<< Set Formula(
If( Column(expr(columnName))[]>Expr(USL),
Column(expr(Concat(expr(columnName)," Spec")))[]="High",
If( Column(expr(columnName))[]<EXPR></EXPR>Column(expr(Concat(expr(columnName)," Spec")))[]="OK";
)
)
))); これらの数式は正常に機能しますが、設定されている場合にのみ評価されます。 列の値を変更しようとすると、仕様が評価されません。 列のプロパティをチェックインすると、数式の評価が有効になります。 数式は再評価されます。チェックしてから、「数式評価の抑制」のチェックを外します。
「Columns」を「AsColumns」に置き換え、[]を削除して、このスクリプトを変更しようとしました。 これは問題を解決せず、これらの式の実装を50%遅くしました。
同じテンプレートで数式を手動で設定しようとしましたが、実際の列名を使用しました(Column(expr(ColumnName)の代わりに:Column)を使用すると、正しく機能します。たとえば、いずれかの列の値を変更すると、数式が評価されます。すぐに。
それで、セルを変更するときに再評価を強制する方法はありますか? **赤いボタンをクリックしてデータテーブルのすべての数式を再評価しないでください**
または、おそらく別の回避策は、Eval(expr(column(columname)))の代わりに、実際の列名(たとえば、:Column)を書き込むスクリプトを使用することです。
したがって、次のようになります。

このように見える代わりに:

何か案は ?
私はそれをテストすることはできませんが、このアプローチはうまくいくかもしれないと思います:
Eval(
Substitute(
Expr(
nnn << Set Formula(
If(
ccc > uuu,
"High",
ccc < lll,
"Low",
"OK"
)
)
),
Expr( nnn ), Column( Concat( columnName, " Spec" ) ),
Expr( ccc ), Column( columnName ),
Expr( lll ), LSL,
Expr( uuu ), USL
)
)
);