<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />C'est peut-être une question très simple, mais après de nombreuses recherches et tests, je n'arrive pas à comprendre.Comment puis-je obtenir le numéro de colonne d'une colonne donnée si tout ce que je sais est le nom de la colonne dans une boîte de dialogue de colonne ?
Code minimisé :
dlg = Column Dialog( dlg_firstParam = ColList( "First Parameter"));
premierParam = dlg["dlg_premierParam"][1] ;
je = 5 ; // ceci est un cas de test.Supposons que je vais sélectionner la cinquième colonne dans la boîte de dialogue ci-dessus.Si cela fonctionne, j'écrirais une boucle pour i = 1 à ncol() et tester le nom de la colonne ( i ) par rapport au premier nom de paramètre... mais cela ne fonctionne pas.
afficher(colonne(i)); // renvoie : Colonne("Date");
afficher(premierParam); // renvoie : :Date ;
show(NomColonne(i)); // renvoie : Date ;
// Ok, donc compte tenu des deux lignes ci-dessus, je pense que je devrais pouvoir supprimer les deux-points au début de la chaîne dans : Date ; et comparer à Date ; comme ci-dessous.On dirait presque que ça va marcher...
a = parse(right(expr(firstParam),length(expr(firstParam))));
montrer (a); // Renvoie : Date ;
// Ok, donc le côlon est supprimé.
if(columnName(i)==a,b = 1, columnName(i)!=a, b = 0);
montrer (b); // retourne 0
//////////////////
Le code ci-dessus est un test pour voir si je peux parcourir et tester si le nom de la colonne ( i ) = une fonction de firstParam. On dirait que ça devrait marcher, mais non. Des idées?
La méthode préférée serait de renvoyer directement le numéro de colonne.Si vous pouvez m'aider, je vous en serais reconnaissant.
(Edit : Juste une note pour changer la dernière variable de votre code de colnumber à un mot clé non-JMP. colnumber est réservé. Sinon fonctionne bien.)
Merci pour la solution ! Un petit conseil à ceux là-bas, si le datatable n'est pas actif sur la ligne
colname = Column( "height" ) << getname;
Alors cette ligne ne fonctionnera pas. Toutefois, si vous spécifiez à la fois le nom de la table de données et celui de la colonne :
colname = dt:height << getname;
Cela fonctionne parfaitement ! J'offre juste quelques conseils pour que les autres ne soient pas bloqués comme moi 
Merci MS. Juste une note pour changer le "colnumber" dans la dernière ligne de votre code en un mot-clé non-JMP. Sinon ça marche bien.
Le gars avec qui je travaille a suggéré une solution similaire en obtenant directement le numéro:
colliste = dt << obtenir les noms de colonnes ( chaîne ) ;
firstParam_name = premierParam << obtenir le nom ;
Numéro de colonne = contient ( colliste , firstParam_name ) ;
Vous pouvez utiliser la fonction Loc() pour localiser la position d'un nom de colonne dans une liste de tous les noms de colonne (ordonnés comme dans la table de données).
Exemple:
dt = Ouvrir ( "$SAMPLE_DATA/Grande classe.jmp" ) ;
colliste = dt << obtenir les noms de colonnes ( chaîne ) ;
nom_colonne = Colonne ( "hauteur" ) << obtenir un nom ;
numéro de colonne = ( Loc ( colliste , nom_colonne ))[ 1 ] ;