Insérer une variable de colonne dans la formuleSalut,
J'essaie d'ajouter un script à une table de données qui permettra à l'utilisateur d'analyser une colonne donnée (: Nom du fichier) à l'aide de délimiteurs que l'utilisateur sélectionnera dans une zone d'affichage (delim). Idéalement, la formule continuera à analyser la colonne: Nom du fichier jusqu'à ce qu'il ne reste plus rien à analyser. Un bloc de mon script est ci-dessous. Dans ce document, je crée une nouvelle colonne (col) pour chaque segment analysé de: Nom du fichier. Je vérifie ensuite col pour les valeurs manquantes, puis je m'arrête si toute la colonne est vide.
Mon problème est que je ne peux pas obtenir col pour évaluer dans la formule. J'ai même essayé d'utiliser MME Eval (Parse (Eval Insert ())) astuce, mais je ne peux pas le faire fonctionner. Y a-t-il des suggestions? J'utilise JMP11.
Merci!
// Example script.
// Note: col = Column( "Column 442" );
delim = "-";
i = 1;
j = 1;
While( j > 0,
j = 0;
col = dt << New Column();
col << Data Type( Character, Nominal );
col << Set Formula( Word( i, :File Name, delim ) );
For Each Row( If( Is Missing( :Column 442 ) == 0, j = j + 1 ) ); // This works.
Eval( Parse( Eval Insert( "For Each Row( If( Is Missing(:Column 442) == 0, j = j + 1 ) )" ) ) ); // This works.
Eval( Parse( Eval Insert( "For Each Row( If( Is Missing(^col^) == 0, j = j + 1 ) )" ) ) ); // This does not work.
Eval( Parse( Eval Insert( "For Each Row( If( Length(^col^) != 0, j = j + 1 ) )" ) ) ); // This does not work.
i = i + 1;
);
Re: Insérer une variable de colonne dans une formule<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Merci MS!
Re: Insérer une variable de colonne dans une formuleRappelez-vous également que: col fait référence à une colonne dans son ensemble. Dans une boucle For Each Row, vous devez utiliser la notation [] pour référencer la cellule actuelle (une des nombreuses raisons de ne pas utiliser For Each Loops!).
Re: Insérer une variable de colonne dans une formuleLa variable col est une référence à une colonne. Mais dans une boucle ForEachRow (), nous devons accéder non à la colonne mais à ses valeurs. Les deux alternatives ci-dessous devraient fonctionner dans votre code. Notez l'index vide [] dans le deuxième exemple.
Eval ( Analyser ( Eval Insert ( "Pour chaque ligne (Si (est manquant (en tant que colonne (^ col ^))) == 0, j = j + 1))" ))) ;
Eval ( Analyser ( Eval Insert ( "Pour chaque ligne (Si (est manquant (^ col ^ []) == 0, j = j + 1))" ))) ;
Re: Insérer une variable de colonne dans une formuleok je ne vais pas essayer de comprendre votre code, mais en ce qui concerne la syntaxe, vous dites que cela fonctionne:
Eval ( Analyser ( Eval Insert ( "
Pour chaque ligne (Si (est manquant (: colonne 442) == 0, j = j + 1));
" ))) ;
Le contenu du modèle Eval est une chaîne. La variable que vous insérez dans ^ ... ^ se comportera alors comme une chaîne. Par conséquent, pour la généraliser, vous souhaitez obtenir le résultat suivant:
colName = col << Obtenir le nom ; // Par exemple, colName = "Colonne 442"
Eval ( Analyser ( Eval Insert ( "
Pour chaque ligne (Si (est manquant (: ^ cName ^) == 0, j = j + 1));
" ))) ;