Wie kann ich „=" als Teil eines Spaltennamens maskieren?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Wie kann ich „=" als Teil eines Spaltennamens maskieren?
Ich muss eine „select where“-Anweisung implementieren und erstelle sie als Zeichenfolge, die mehrere Spaltennamen umfasst. Bei der Auswertung wird jedoch versucht, das „=“ als Zuweisung zu interpretieren. Meine Spaltennamen lauten wie folgt: „COND=TEMP“.
Unten der Abschnitt des Skripts, den ich verwende:
select_string = „:Testname == benchNameToCompare“ ;
//Für jede Spalte in der Kartentabelle: Wenn der Spaltenname ein COND ist, fügen Sie ihn den Auswahlkriterien hinzu
Für ( J = 1 , J <= numOfColumns , J ++,
Aktuelle Datentabelle ( KorrelationMapTable ) ;
aktueller Spaltenname = KorrelationMapTable << Spaltennamen abrufen () ;
Wenn ( Enthält ( aktueller Spaltenname [ J ] , „COND_“ ) > 0 ,
der Wert = aktueller Spaltenname [ J ][ ich ] ;
colName = aktueller Spaltenname [ J ] ;
select_string = select_string || " & As Column(correlationMapTable," || verkohlen ( aktueller Spaltenname [ J ]) || ") == " || verkohlen ( aktueller Spaltenname [ J ][ ich ]) ;
) ;
) ;
select_string = „benchDataTable << select where(“ || select_string || ")" ;
evalu ( analysieren ( select_string )) ; //Hier wird beschwert, wenn ich „=" als Teil des Spaltennamens habe.
benchDataTable << Teilmenge (( Ausgewählte Zeilen ) , Name der Ausgabetabelle ( „Gefilterter Banktisch“ )) ;
Vielen Dank im Voraus!
Betreff: Wie kann ich „=" als Teil eines Spaltennamens maskieren?Ja, Anführungszeichen.Danke für den Fang.
Um mehr über Escape-Zeichen und die Nuancen von JSL zu erfahren, können Sie auf den Scripting Guide verweisen, der wirklich gut zusammengestellt ist.Hilfe>>Bücher>>Skripthandbuch.(Escape-Zeichen finden Sie auf Seite 87).Wenn Sie sich nur über die Syntax wundern, ist der Scripting Index hilfreicher.Hilfe>>Skriptindex.
Ein paar Dinge, auf die ich hinweisen sollte:
Bei Zahlen in If()-Anweisungen reagiert JSL wahrheitsgetreu auf alles andere als 0. Also Wenn ( Enthält ( aktueller Spaltenname [ J ] , „COND_“ ) > 0, ist dasselbe wie Wenn ( Enthält ( aktueller Spaltenname [ J ] , „COND_“ ) ,
Das:
//Für jede Spalte in der Kartentabelle: Wenn der Spaltenname ein COND ist, fügen Sie ihn den Auswahlkriterien hinzu
Für ( J = 1 , J <= numOfColumns , J ++,
Aktuelle Datentabelle ( KorrelationMapTable ) ;
aktueller Spaltenname = KorrelationMapTable << Spaltennamen abrufen () ;
Wenn ( Enthält ( aktueller Spaltenname [ J ] , „COND_“ ) > 0 ,
der Wert = aktueller Spaltenname [ J ][ ich ] ;
colName = aktueller Spaltenname [ J ] ;
wäre besser geschrieben:
//Für jede Spalte in der Kartentabelle: Wenn der Spaltenname ein COND ist, fügen Sie ihn den Auswahlkriterien hinzu
Für ( J = 1 , J <= numOfColumns , J ++,
colName = Spalte( KorrelationMapTable, j) << Holen Sie sich den Namen ;
Wenn ( Enthält ( colName , „COND_“ ) ,
Betreff: Wie kann ich „=" als Teil eines Spaltennamens maskieren?Hey, Breinoso,
Ja, ich bin noch nicht lange genug dabei, um den Ursprung der Escape-Zeichen in JSL zu kennen, aber sie beginnen tatsächlich mit „\!“.Um eine neue Zeile in eine Zeichenfolge einzufügen, lautet sie „\!n“.Um zu verhindern, dass ein Anführungszeichen von JMP als Ende einer Zeichenfolge erkannt wird, machen Sie es zu \!". (Und ich denke, msharp wollte sagen: „Was Sie entkommen müssen, ist Anführungszeichen ").
Und ja, der Übergang von anderen Sprachen zu JSL kann etwas abschreckend sein ;-).
HTH,
Erik
Betreff: Wie kann ich „=" als Teil eines Spaltennamens maskieren?Hallo msharp,
Vielen Dank, dass Sie sich die Zeit genommen haben zu antworten. Könnten Sie also klarstellen, dass die erforderliche Escape-Sequenz \! \! ?
Als C#-Programmierer tut mir allein das Erlernen von JSL sehr weh 
Grüße,
B
Betreff: Wie kann ich „=" als Teil eines Spaltennamens maskieren?Ich bin ehrlich, dieses Skript hat viele Probleme.Mir tut schon der Kopf weh, wenn ich daran denke, es zu debuggen.
Ich werde es also nicht tun, aber im Wesentlichen ist Ihr Problem folgendes:
= muss nicht entkommen werden, was Sie entkommen müssen Klammer Anführungszeichen.Auch bekannt als:
evalu ( analysieren ( "dt << Select Where(Spalte(" Kond = Temp ") == 2)" )) ;
muss werden:
evalu ( analysieren ( "dt << Select Where(Column(\!"Cond=Temp\!") == 2)" )) ;