¿Puedo usar comillas en los nombres de columna en una fórmula?Hola,
Tengo el siguiente script simplificado en una tabla:
dataTable = Current Data Table();
If( !Contains( strColNames, "pears" ),
dataTable << New Column( "pears",
numeric,
"Continuous",
Formula( :"apples" + 2 )
)
);
Cuando copio este script a una nueva tabla (usando ctrl-c ctrl-v), que ya tiene una columna llena llamada "manzanas", el script termina como:
dataTable = Current Data Table();
If( !Contains( strColNames, "pears" ),
dataTable << New Column( "pears",
numeric,
"Continuous",
Formula( As Column() + 2 )
)
);
La referencia a la columna "manzanas" se reemplaza en la fórmula por la declaración As Column (). El guión ya no funciona. Resulta que al eliminar las comillas de la referencia a la columna "manzanas" en la fórmula se resolvió el problema.
Considero que esto es un error. ¿Es, o es este comportamiento esperado?
Saludos, Radko
Re: ¿Puedo usar comillas en los nombres de columna en una fórmula?Hago esto de manera ligeramente diferente. Uso la siguiente función para crear la columna. Si la columna existe, simplemente devuelve el identificador de columna, si la columna no existe, crea una nueva columna y devuelve el identificador. Entonces el uso sería algo como esto:
PearCol = createcol (dt, "Peras", "NUMÉRICO"); // "NUMERICOS" o "PERSONAJES"
AppleCol = createcol (dt, "Apples", "NUMERIC");
PearCol << establece cada valor (AppleCol [] + 2);
Prefiero usar 'establecer cada valor' pero también puede establecer una fórmula si eso tiene más sentido en su aplicación.
CreateCol = Function ({ct, ccn, ColType},
{local predeterminado},
CreateColExpr = Expr (
stuff = __CurDataTable__ << Nueva columna (__ColName__, __ColType__)
);
stuff = Try (Column (ct, ccn), -1);
Espera (0);
Si (cosas == -1,
CreateColumn = Sustituto (Nombre Expr (CreateColExpr),
Expr (__ColType__), Parse (ColType),
Expr (__CurDataTable__), Eval (ct),
Expr (__ColName__), Eval (ccn)
);
Mostrar (CreateColumn);
Eval (CreateColumn);
);
cosas;
);
Re: ¿Puedo usar comillas en los nombres de columna en una fórmula?Tendrá que manejar manualmente las cotizaciones. Vea el código a continuación:
dataTable = Current Data Table();
If( !Contains( strColNames, "\!"pears\!"" ),
dataTable << New Column( "\!"pears\!"",
numeric,
"Continuous",
Formula( :Name( "\!"apples\!"" ) + 2 )
)
);