Salut,
Aujourd'hui, j'ai donc un problème avec les formules qui ne sont pas mises à jour dans ma table de données.
J'ai une grande table avec un tas de mesures. Il existe un script qui définit les colonnes avec des formules pour évaluer les spécifications contenues dans les variables du tableau de données. Ces formules sont générées de la manière suivante :
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";
)
)
))); Ces formules fonctionnent bien mais elles ne sont évaluées que lorsqu'elles sont définies. Lorsque j'essaie de modifier une valeur dans une colonne, la spécification n'est pas évaluée. J'ai vérifié les propriétés de la colonne et les évaluations de formules sont activées. Les formules sont réévaluées. Je coche puis décoche la case "supprimer l'évaluation de la formule".
J'ai essayé de modifier ce script en remplaçant "Columns" par "As Columns" et en supprimant le []. Cela n’a pas résolu le problème et a ralenti la mise en œuvre de ces formules de 50 %.
J'ai essayé de définir manuellement des formules avec le même modèle mais en utilisant les noms de colonnes réels (:Column au lieu de Column (expr (ColumnName )) et elles fonctionnent correctement. Par exemple, chaque fois que je modifie une valeur dans l'une des colonnes, la formule est évaluée tout de suite.
Alors, existe-t-il un moyen de forcer la réévaluation lors de la modification des cellules ? ** NE PAS cliquer sur le bouton rouge et réévaluer toutes les formules du tableau de données **
Ou peut-être qu'une autre solution serait d'avoir un script qui écrit les noms de colonnes réels (par exemple :Column ) au lieu d'avoir le Eval(expr(column (columname))).
Cela ressemble donc à ceci :

au lieu de ressembler à ça :

Des idées ?
Je ne peux pas le tester mais je pense que cette approche pourrait fonctionner :
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
)
)
);