Le script de la table de données ne se met pas à jour de manière dynamique pour utiliser la nouvelle valeur dans le script enregistré, mais fonctionne à partir du script jsl principalSalut tout le monde,
Je suis un peu confus quant à la raison pour laquelle le script de table ne prend pas en compte de manière dynamique la variable définie dans le script principal. Ainsi, les chiffres obtiennent des valeurs standard plutôt que des sélections dynamiques basées sur l'exécution de la boucle for. Toute aide serait appréciée. Vous trouverez ci-dessous le script de table auquel je fais référence au cas où il ne serait pas communément appelé script de table.

Veuillez jeter un œil au script JSL principal sur la gauche dans lequel le code en surbrillance fonctionne de manière dynamique. Lorsque le « script vc » est enregistré dans la table de données, le script s'ouvre sur le côté droit de la capture d'écran. Il semble que la première valeur que « weights » et « counts » rencontrent soit définie pour chaque boucle de la boucle for dans laquelle elle est intégrée. Existe-t-il un moyen de rendre cela dynamique ? Je n'ai lu que des articles sur la création de colonnes en chaînes ou en formule, mais je ne pense pas que cela corresponde à ce cas.

Toute aide serait appréciée pour modifier le code jsl principal de manière à ce que le script enregistré ne code pas en dur ces valeurs. Merci d'avance !
Automatisation et scriptsAnalyse et modélisation de données de baseExploration et visualisation des donnéesIngénierie de la qualité et des procédésPartage et communication des résultatsFenêtresRe : Le script de la table de données ne se met pas à jour de manière dynamique pour utiliser la nouvelle valeur dans le script enregistré, mais fonctionne à partir du script jsl principalY a-t-il des valeurs spécifiques que vous souhaitez évaluer mais pas toutes dans votre script vc ?
Re : Le script de la table de données ne se met pas à jour de manière dynamique pour utiliser la nouvelle valeur dans le script enregistré, mais fonctionne à partir du script jsl principalEn haut à gauche, je crée une table de données sous-ensemble "vc depo summary subset" qui, pour chaque boucle for, sous-ensemble par une variable dans ce cas depo mais pour l'exemple : depo = {"A", "B", "C"}. Dans le script jsl de gauche, le sous-ensemble par A donne des poids = [50, 50, 50, 50, 50] et des nombres = [16, 20, 19, 20, 20] et le sous-ensemble par B ou C donne des poids et des nombres différents. Le script de gauche fonctionne correctement. Mais lorsque j'ouvre le même script qui est enregistré dans la table de données, il définit par défaut les poids/nombres sur les valeurs de A au lieu de laisser la variable (comme elle est à gauche) qui porte les poids/nombres corrects pour B et C respectivement. Je ne sais pas comment le conserver en tant que variable plutôt que de voir les valeurs codées en dur sur la droite.
Re : Le script de la table de données ne se met pas à jour de manière dynamique pour utiliser la nouvelle valeur dans le script enregistré, mais fonctionne à partir du script jsl principalSi je comprends bien, vous souhaitez empêcher l'évaluation de certaines variables. Une option pour ce faire est d'utiliser plusieurs Expr().
As you didn't share the script, I will try to use very simple example which hopefully demonstrates what you can do. Compare the script, table script and script which is inside frame box
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
gb = dt << Graph Builder(
Size(525, 454),
Show Control Panel(0),
Variables(X(:weight), Y(:height)),
Elements(Points(X, Y, Legend(3)))
);
script = EvalExpr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(Expr(Expr(vals)))},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(Expr(Expr(vals)))), i++,
H Line(Expr(Expr(Expr(vals))));
);
);
);
))
);
Eval(EvalExpr(
dt << New Script("Test", Expr(Name Expr(script)));
));


Re : Le script de la table de données ne se met pas à jour de manière dynamique pour utiliser la nouvelle valeur dans le script enregistré, mais fonctionne à partir du script jsl principalMerci Jarmo, ça a marché !
Y a-t-il une raison pour laquelle nous devons tripler la variable avec trois fonctions Expr() au lieu d'une seule ?
Re : Le script de la table de données ne se met pas à jour de manière dynamique pour utiliser la nouvelle valeur dans le script enregistré, mais fonctionne à partir du script jsl principalOui, car c'est ainsi que fonctionne l'évaluation des expressions sur JMP ( Guide de script > Méthodes de programmation > Expressions avancées, macros et listes « Citation et suppression des guillemets des expressions »).
Dans ce cas, vous avez deux EvalExpr lors de la construction de l'expression qui en évaluera deux ET vous souhaitez en laisser un supplémentaire pour le script de table afin qu'il soit conservé comme Expr au lieu d'être évalué (nous en avons donc besoin de trois au total). Il existe d'autres façons de construire des choses comme celle-ci, mais il est bon d'apprendre comment l'ajout de plusieurs Expr() peut parfois être utile.
Je pense que par exemple, cela devrait donner lieu à un script similaire sans avoir besoin de triple Expr()
script = Substitute(
Expr(
vals = [55, 60, 70];
Eval(
Eval Expr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = _valsexpr_},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(_valsexpr_), i++,
H Line(_valsexpr_)
);
)
)
)
);
),
Expr(_valsexpr_), Name Expr(Expr(vals))
);
Re : Le script de la table de données ne se met pas à jour de manière dynamique pour utiliser la nouvelle valeur dans le script enregistré, mais fonctionne à partir du script jsl principalPourquoi pas juste
script = Expr(
vals = [55, 60, 70];
Eval(EvalExpr(
Current Report()[FrameBox(1)] << Add Graphics Script(
Local({myvals = Expr(vals)},
Pen Size(1);
Line Style(1);
For(i = 1, i <= N Items(Expr(vals)), i++,
H Line(Expr(vals));
);
);
);
))
);?