Bonjour,
J'ai créé une application qui implique que l'utilisateur sélectionne les colonnes à utiliser dans la construction d'un modèle, pour certains PQA, via l'utilisation de fenêtres modales, comme dans le fichier JMP ci-joint avec les données du jouet et le script intitulé "Modèle pour certains PQA et Colonnes".
Ce modèle est censé créer une sortie personnalisée pour chaque PQA sélectionné pour n'importe quel ensemble de données avec n'importe quelle orthographe des noms de colonnes. 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 représenté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 contenant les données personnalisées et formatées (avec les lignes des axes Y LSL et USL et les étiquettes de l'axe Y avec les mesures).

Voici le code du script JSL qui produit la sortie en fonction des entrées de l'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>
Une fois ma fenêtre de sortie créée, je souhaite pouvoir enregistrer le script dans la table de données d'origine contenant toutes les données (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 instruction dans ce script ait un résultat particulier. Par exemple, dans l'ensemble de données sur les 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 ( de sorte que :PQA == "A" ) et 5C comme sélectionné_stor_cond (de sorte 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 ?
Merci beaucoup. Je n'ai même pas pensé à utiliser Eval() et autres. Je vais certainement en savoir plus à ce sujet et jeter un œil au lien que vous avez fourni.
Insérez une expression dans une autre à l'aide d'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...