Kann ich Anführungszeichen für Spaltennamen in einer Formel verwenden?Hallo,
Ich habe das folgende vereinfachte Skript in einer Tabelle:
dataTable = Current Data Table();
If( !Contains( strColNames, "pears" ),
dataTable << New Column( "pears",
numeric,
"Continuous",
Formula( :"apples" + 2 )
)
);
Wenn ich dieses Skript in eine neue Tabelle kopiere (mit Strg-Strg-V), die bereits eine gefüllte Spalte mit dem Namen "Äpfel" enthält, endet das Skript wie folgt:
dataTable = Current Data Table();
If( !Contains( strColNames, "pears" ),
dataTable << New Column( "pears",
numeric,
"Continuous",
Formula( As Column() + 2 )
)
);
Der Verweis auf die Spalte "Äpfel" wird in der Formel durch die As Column () - Anweisung ersetzt. Das Skript funktioniert nicht mehr. Es stellt sich heraus, dass das Problem durch das Entfernen der Anführungszeichen aus der Referenz auf die Spalte "Äpfel" in der Formel gelöst wurde.
Ich halte das für einen Fehler. Ist es das oder ist das erwartete Verhalten?
Grüße, Radko
Re: Kann ich Anführungszeichen für Spaltennamen in einer Formel verwenden?Ich mache das etwas anders. Ich benutze die Funktion unten, um die Spalte zu erstellen. Wenn die Spalte vorhanden ist, wird einfach das Spaltenhandle zurückgegeben. Wenn die Spalte nicht vorhanden ist, wird eine neue Spalte erstellt und das Handle zurückgegeben. Die Verwendung wäre also etwa so:
PearCol = createcol (dt, "pears", "NUMERIC"); // "NUMERIC" oder "CHARACTER"
AppleCol = createcol (dt, "Äpfel", "NUMERISCH");
PearCol << jeden Wert einstellen (AppleCol [] + 2);
Ich ziehe es vor, 'jeden Wert festlegen' zu verwenden, aber Sie können auch eine Formel festlegen, wenn dies für Ihre Anwendung sinnvoller ist.
CreateCol = Funktion ({ct, ccn, ColType}),
{default local},
CreateColExpr = Ausdruck (
stuff = __CurDataTable__ << Neue Spalte (__ColName__, __ColType__)
);
stuff = Try (Spalte (ct, ccn), -1);
Warten (0);
Wenn (stuff == -1,
CreateColumn = Stellvertreter (Name-Ausdruck (CreateColExpr),
Ausdruck (__ColType__), Parse (ColType),
Ausdruck (__CurDataTable__), Eval (ct),
Ausdruck (__ColName__), Eval (ccn)
);
Show (CreateColumn);
Eval (CreateColumn);
);
Zeug;
);
Re: Kann ich Anführungszeichen für Spaltennamen in einer Formel verwenden?Sie müssen die Anführungszeichen manuell bearbeiten. Siehe den Code unten:
dataTable = Current Data Table();
If( !Contains( strColNames, "\!"pears\!"" ),
dataTable << New Column( "\!"pears\!"",
numeric,
"Continuous",
Formula( :Name( "\!"apples\!"" ) + 2 )
)
);