Un client a demandé comment créer un script JSL pour inciter d’autres utilisateurs à définir le LSL et l’USL pour chaque table de sous-ensemble.
Je me suis dit que je pourrais publier le script ici pour aider ceux qui pourraient avoir la même demande à l'avenir. Si vous avez des commentaires, des questions ou des améliorations, n'hésitez pas à les laisser.
// Subset data table
// → Data Table( "Product=B" )
dtList = Open("$SAMPLE_DATA/Abrasion.jmp")
<
<SUBSET></SUBSET>
Excellent scénario ! Pour le rendre plus générique, vous devrez peut-être répondre à quelques questions supplémentaires :
- utiliseriez-vous toujours cela sur toutes les tables ouvertes ou l'utilisateur devrait-il pouvoir choisir les tables ?
- Comment définir la colonne sur laquelle les limites de spécification seront fixées ? Première colonne du tableau ? L'utilisateur doit-il pouvoir les sélectionner ou peut-être simplement le laisser définir toutes les colonnes continues ?
Je démarrerais également le script avec les noms par défaut ici (1) ; pour éviter certains problèmes que l'espace de noms global pourrait causer.
Vous pourriez également obliger les clients à utiliser la fonction « Gérer les limites » de JMP. Le problème est que l'utilisateur devrait savoir qu'il doit cliquer sur « Enregistrer dans les propriétés de la colonne », puis sur « OK ».
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Abrasion.jmp");
dt <
<SUBSET></SUBSET>
<P>Et pour la version « générique » qui prendrait simplement toutes les tables</P> <BR /> <BR /> <CODE class=" language-jsl">Names Default To Here(1);
For Each({dt_ref}, Get Data Table List(),
New Window("Manage Limits for " || (dt_ref << get name) || " - :Abrasion" , << modal, dt_ref << Manage Limits(Process Variables(dt_ref << Get Column Names("Continuous"))));
);
Je donnerais probablement au moins aux utilisateurs la possibilité de choisir les tables à utiliser, donc ce serait quelque chose comme ça lors de l'utilisation de la gestion des limites
Names Default To Here(1);
dtlist = Get Data Table List();
dtnames = Transform Each({dtref}, dtlist,
dtref << get name
);
// I don't like using modal windows, but maybe it is fine in this case
nw = New Window("Pick tables to set spec limits to", << modal, << return result,
<< On Validate(
If(N Items(lb_tables << get selected) < 1,
New Window("Warning", << modal,
H List Box(align("center"),
Icon box("Warning"),
Text Box("Select at least one table or cancel"), << Set Window Icon("Warning")
)
);
0;
,
1;
);
),
Lineup Box(N Col(2),
Panel Box("Pick Tables",
lb_tables = Listbox(dtnames)
),
Panel Box("Actions",
Button Box("OK",
user_selections = lb_tables << get selected;
),
Button Box("Cancel")
)
)
);
If(nw["Button"] == 1,
For Each({tablename}, nw["lb_tables"],
dt_ref = Datatable(tablename);
New Window("Manage Limits for " || (dt_ref << get name) || " - :Abrasion" , << modal,
H List Box(align("bottom"),
ml = dt_ref << Manage Limits(Process Variables(dt_ref << Get Column Names("Continuous"))),
Lineup Box(N Col(1),
Button Box("OK",
ml << Save to Column Properties; // could be used to "force save"
),
Button Box("Cancel")
)
)
);
);
);