Bonjour,
J'ai créé une application qui implique que l'utilisateur sélectionne des colonnes à utiliser dans la construction d'un modèle, pour sélectionner des PQA, grâce à l'utilisation de fenêtres modales, comme dans le fichier JMP joint avec les données et le script du jouet intitulé "Modèle pour sélectionner des PQA et Colonnes".
Ce modèle est censé créer une sortie personnalisée pour chaque PQA sélectionné pour tout ensemble de données avec n'importe quelle orthographe des noms de colonne. Lorsque le script est exécuté, une fenêtre contextuelle apparaît demandant à l'utilisateur de sélectionner des colonnes spécifiques. Cette fenêtre est illustrée dans la figure ci-dessous :

La fenêtre suivante demande à l'utilisateur de définir les PQA, les conditions de stockage, et demande si l'utilisateur souhaite afficher le sous-ensemble de données pour chaque PQA - condition de stockage ou non. Autrement dit, pour chaque PQA sélectionné, un sous-ensemble de données est créé en arrière-plan. Ensuite, les résultats du modèle et du graphique sont produits puis ajoutés à chaque itération de la boucle for à une fenêtre avec les données personnalisées et formatées (avec les lignes d'axe y LSL et USL et les étiquettes d'axe y avec des mesures).

Voici le code de script JSL qui produit la sortie compte tenu de l'entrée utilisateur à partir des fenêtres mentionnées ci-dessus :
//select the data in the original data table
Names Default To Here( 1 );
dt = Current Data Table();
//get the unique PQAs
col9 = Column(dt, "PQA");
unique_pqa = Associative Array( col9 ) << get keys;
/////////////////////////////////////////////////////////////
//User Selection Menu(s)
/////////////////////////////////////////////////////////////
//Part 1: ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Column names",
<<MODAL></MODAL>
Avec ma fenêtre de sortie créée, je veux pouvoir enregistrer le script dans la table de données d'origine avec toutes les données qu'il contient (dont dépendent les données du sous-ensemble). Cependant, lorsque j'enregistre les scripts pour toutes les sorties dans la fenêtre de script, j'obtiens les résultats suivants :
Remarquez le
Where ( :PQA == pqa_val & column(listDT, set_storage_condition_col) == selected_stor_cond )
l'instruction ne permet pas au script de fonctionner.
Je veux que cette déclaration dans ce script ait la sortie particulière. Par exemple, dans l'ensemble de données de jouets que j'ai joint, le
column(listDT, set_storage_condition_col)
est égal à :Condition de stockage
De plus, si je devais sélectionner A comme pqa_val ( pour que :PQA == "A" ) et 5C comme select_stor_cond (pour que :Condition de stockage == "5C" ).
Cependant, le script de sortie produit n'existerait pas, même si je fais référence à l'entrée de l'utilisateur. Pourquoi JMP n'écrit-il pas ces valeurs comme dans cet exemple ci-dessus dans le script pour chaque instance particulière de la boucle ?
Insérer une expression dans une autre en utilisant Eval Insert, Eval Expr, Parse et Substitute devrait vous aider. De plus, << Fermer la fenêtre n'est pas nécessaire lorsque vous appuyez sur un bouton car vous utilisez des fenêtres modales.
J'ai ajouté un Eval(EvalExpr()) et quelques Expr() autour et à l'intérieur de l'instruction where. :
Voir plus...
//select the data in the original data table
Names Default To Here(1);
dt = Current Data Table();
//get the unique PQAs
col9 = Column(dt, "PQA");
unique_pqa = Associative Array(col9) << get keys;
/////////////////////////////////////////////////////////////
//User Selection Menu(s)
/////////////////////////////////////////////////////////////
//Part 1: ask user for column names in a new window nw1
//possible Group column name (should be character)
character_col_names = dt << Get Column names(character, String);
//possible result column name (should be numeric)
numeric_col_names = dt << Get Column names(Numeric, String);
nw1 = New Window("Column names",
<<MODAL></MODAL>
Merci beaucoup. Je n'ai même pas pensé à utiliser Eval() et connexe. Je vais certainement en savoir plus à ce sujet et je vais jeter un œil au lien que vous avez fourni.