Comment fournir un argument au délimiteur dans les colonnes combinées () ?Ce qui suit ne fonctionne pas
Names Default To Here (1);
// Combine columns
dm = ".0";
Data Table( "myTable" ) << Combine Columns(
columns( :Col1, :Col2 ),
Column Name( "ID" ),
Delimiter(dm)
//Delimiter ("dm")
);Mais écrire l'argument à Delimiter directement comme
Delimiter(".0")travaux. Comment fournir un argument au délimiteur depuis l'extérieur ?
Automatisation et scriptRe : Comment fournir un argument au délimiteur dans les colonnes combinées () ?Cela se produit car JMP n'évalue pas les arguments en arguments dans les messages.
Vous pouvez utiliser Substitute pour substituer la valeur de dm.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// Combine columns
dm = ":";
Eval(
Substitute(
Expr(
dt << Combine Columns(
columns( :name, :age ),
Column Name( "ID" ),
Delimiter( d )
)
),
Expr( d ), dm
)
);Re : Comment fournir un argument au délimiteur dans les colonnes combinées () ?@Jeff_Perkinson Merci. Dans ce cas, comment écrire un script, si j'ai une condition sur le délimiteur - par exemple délimiteur = ".0" si : âge <13 et délimiteur = ".1", sinon.
Re : Comment fournir un argument au délimiteur dans les colonnes combinées () ?Le Le message Combiner les colonnes fait la même chose que Cols > Utilitaires > Combiner les colonnes .
Combiner les colonnes ne prend en charge aucune condition.
Au lieu de cela, je créerais un nouvelle colonne avec une formule pour concaténer vos autres colonnes comme vous le souhaitez.
Voici à quoi ressemblerait la formule dans l'éditeur de formule.

Et voici le JSL pour le créer.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
// Combine columns
dm1 = ":";
dm2 = "-";
Eval(
Substitute(
Expr(
dt << New Column( "ID",
Character,
"Nominal",
Formula( :name || If( :age <= 13, d1, d2 ) || Char( :age ) ),
)
),
Expr( d1 ), dm1,
Expr( d2 ), dm2
)
);