Comparaison dans l'instruction Select Where ()Salut tout le monde,
J'ai effectué de nombreuses recherches sur ce site Web et je pense que c'est une solution simple, mais pour une raison quelconque, je n'arrive pas à le faire fonctionner et je suis coincé avec cela depuis 2 jours.
Dans le script ci-dessous, je demande à l'utilisateur quelle partie d'une colonne spécifique il souhaite sélectionner. Par exemple, lorsque la colonne a la valeur 8. (la colonne peut avoir des valeurs de 1 à 8). Que je voudrais sélectionner les lignes avec cette valeur dans cette colonne et créer un nouveau dt où je crée des graphiques spécifiques avec uniquement ce sous-ensemble de la table de données.
Il crée la table de sous-ensemble avec le nom et le numéro que j'ai rempli dans la zone de texte. Il me montre le numéro que j'ai renseigné, c'est-à-dire XNo = "8" ; Mais le Select Where ( Column == XNO) ne fonctionne pas. Cela ne me donne pas d'erreur, il ne sélectionne tout simplement pas les lignes spécifiques ni ne crée le graphique. Il crée une nouvelle table de données portant le même nom que la table de données à laquelle je fais référence.
Si je remplis Select Where (colonne == "8") ou Select Where (colonne == 8), cela fonctionne. Je veux juste que ce 8 soit variable et que l'opérateur puisse le remplir lui-même.
dt = table de données actuelle ();
col = colonne(dt,"MILL_X");
col_name_list = dt << obtenir les noms de colonnes (string) ;
rdata = New Window( "Quelle partie souhaitez-vous vérifier ?",
<
<
X = Zone d'édition de texte( "Quelle partie ?" ),
zone de texte ("Cliquez sur OK pour enregistrer"),
Boîte à boutons("OK",
XNo = X << Obtenir le texte),
Boîte à boutons (« Annuler » );
);
Afficher( XNon ); // Me montre la chaîne qui a été donnée, c'est-à-dire que si je remplis 8, cela me montre --> XNo = "8";
// Lignes souhaitées sélectionnées en fonction des valeurs de la colonne
dt << Sélection de ligne (
Selectwhere( :MILL_X == XNo ), // <--- Cela ne fonctionne pas, il sélectionne l'intégralité du dt au lieu de la valeur sélectionnée dans la colonne. Si je remplis :MILL_X == 8 ça marche. Mais seulement pour le numéro 8.
Dialog( Edit( Equal( Source Column( col ) ) ), Garder la boîte de dialogue ouverte ( 0 ) )
);
Subset( (Lignes sélectionnées), Nom de la table de sortie( "X " || Char(ColletNo) || " inspection" ) );
// Crée le graphique souhaité en utilisant les lignes sélectionnées
Distribution(
Distribution continue (
Colonne( :"Y (µm)"n ),
Capacité du processus (LSL (-15), cible (0), USL (15)
)
);
// En option, vous pouvez personnaliser davantage le graphique ici
// Par exemple, ajout d'éléments supplémentaires ou d'options de formatage
dt << effacer la sélection ;
dt << effacer la sélection de colonne ;
Automatisation et scriptsAccès aux donnéesIngénierie Qualité et Procédés Re : Comparaison dans l'instruction Select Where ()Essayez de convertir XNo en nombre (Num(XNo) OU utilisez la zone d'édition de nombre. Vous devrez peut-être également modifier un peu la référence de votre colonne (ajoutez [] à la comparaison). Vous trouverez ci-dessous un exemple utilisant la table Big Class, utilisez des valeurs comprises entre 12 et 17 pour test
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col = Column(dt, "age");
col_name_list = dt << get column names(string);
rdata = New Window( "Which part do you want to check?",
<<MODAL> XNon = "8" ; // Sélection des lignes souhaitées en fonction des valeurs de la colonne dt << Select Where(col[] == Num(XNo)); dt_subset = dt << Sous-ensemble (lignes sélectionnées) ; dt << effacer la sélection ;</MODAL>
Si des valeurs spécifiques sont autorisées, vous pouvez également modifier votre sélecteur pour qu'il permette uniquement à l'utilisateur de choisir des valeurs spécifiques MAIS commencez par faire fonctionner cette version, puis envisagez ces options.
Re : Comparaison dans l'instruction Select Where ()Ce n'est pas spécifiquement la solution mais je viens de découvrir que la colonne doit être ordinale (ou du moins ne pas être continue). Il ne me reste plus qu'à le créer de telle manière que j'obtienne toujours toutes mes autres colonnes au lieu de seulement la colonne d'âge. Je mettrai à jour lorsque j'aurai le correctif correct, mais merci pour cela. Je savais que c'était quelque chose de stupide qui ne fonctionnait pas.
Re : Comparaison dans l'instruction Select Where ()Je ne sais pas pourquoi cela n'a pas fonctionné auparavant, car j'ai déjà essayé l'instruction Num() ainsi que l'instruction col[]. Peut-être que je ne les ai pas fait en même temps, je ne sais pas, j'ai essayé plusieurs itérations mais ça marche maintenant. Même changer la colonne en continu n'est pas nécessaire. La seule chose que je n'ai pas essayée auparavant et qui se trouve dans votre script est le "Noms par défaut ici (1);" doubler.