Puis-je utiliser des guillemets sur les noms de colonne dans une formule?Salut,
J'ai le script simplifié suivant dans un tableau:
dataTable = Current Data Table();
If( !Contains( strColNames, "pears" ),
dataTable << New Column( "pears",
numeric,
"Continuous",
Formula( :"apples" + 2 )
)
);
Lorsque je copie ce script dans une nouvelle table (avec ctrl-c ctrl-v), qui contient déjà une colonne remplie nommée "pommes", le script se termine comme suit:
dataTable = Current Data Table();
If( !Contains( strColNames, "pears" ),
dataTable << New Column( "pears",
numeric,
"Continuous",
Formula( As Column() + 2 )
)
);
La référence à la colonne "pommes" est remplacée dans la formule par l'instruction As Column (). Le script ne fonctionne plus. Il s'avère que la suppression des guillemets de la référence à la colonne "pommes" de la formule a résolu le problème.
Je considère cela comme un bug. Est-ce ou est ce comportement attendu?
Cordialement, Radko
Re: Puis-je utiliser des guillemets sur les noms de colonne dans une formule?Je le fais légèrement différemment. J'utilise la fonction ci-dessous pour créer la colonne. Si la colonne existe, elle renvoie simplement le descripteur de colonne. Si la colonne n'existe pas, elle crée une nouvelle colonne et renvoie le descripteur. Donc, l'utilisation serait quelque chose comme ça:
PearCol = createcol (dt, "Poires", "NUMERIQUE"); // "NUMERIC" ou "CHARACTER"
AppleCol = createcol (dt, "pommes", "NUMERIC");
PearCol << définir chaque valeur (AppleCol [] + 2);
Je préfère utiliser «définir chaque valeur», mais vous pouvez également définir une formule si cela est plus logique dans votre application.
CreateCol = Function ({ct, ccn, ColType},
{local default},
CreateColExpr = Expr (
stuff = __CurDataTable__ << Nouvelle colonne (__ColName__, __ColType__)
)
stuff = Try (Column (ct, ccn), -1);
Attendre (0);
Si (truc == -1,
CreateColumn = Substitute (Nom Expr (CreateColExpr),
Expr (__ColType__), Parse (ColType),
Expr (__CurDataTable__), Eval (ct),
Expr (__ColName__), Eval (ccn)
)
Show (CreateColumn);
Eval (CreateColumn);
)
des trucs;
)
Re: Puis-je utiliser des guillemets sur les noms de colonne dans une formule?Vous devrez gérer manuellement les guillemets. Voir le code ci-dessous:
dataTable = Current Data Table();
If( !Contains( strColNames, "\!"pears\!"" ),
dataTable << New Column( "\!"pears\!"",
numeric,
"Continuous",
Formula( :Name( "\!"apples\!"" ) + 2 )
)
);