Überprüfen Sie, ob die Spalte vorhanden ist.Hallo,
Ich möchte eine neue Spalte erstellen und mache vorher Folgendes:
Fragen Sie die Datentabelle, ob die Spalte bereits vorhanden ist.
Gibt es eine „beste“ Möglichkeit, den Code mit anderen Kollegen im Unternehmen zu teilen?
Überprüfen Sie den Spaltennamen, falls vorhanden
Wie überprüfe ich, ob eine Liste mit Spalten vorhanden ist, und melde die fehlenden Spalten mithilfe eines Popup-Fensters?
Bestimmen, ob eine Spalte vorhanden ist
Erstellen Sie nur dann eine neue Row()-Spalte, wenn diese noch nicht vorhanden ist
Überprüfen Sie vor der grafischen Darstellung, ob der Spaltenname vorhanden ist
MassenanpassungBetreff: Überprüfen Sie, ob die Spalte vorhanden ist?noch ein paar Einblicke:
- Cool!
Wusste/bemerkte nicht, dass der Vergleich funktioniert ohne Die Zeichenfolge Option von Spaltennamen abrufen
so robust wie @txnelson 'S try(column(dt,"Alter"))<BR /> Alter ~ Alter
- benutz einfach Zeichenfolge als Argument für Get Column Names, wenn Sie zwischen diesen unterscheiden möchten Alter Und Alter
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Show(dt << Get Column Names(String));
Show( Contains( dt << Get Column Names(String), As Name( "Age") ) ); // -> nope
Show(dt << Get Column Names);
Show( Contains( dt << Get Column Names, As Name( "Age") ) ); // found !
Show(r=try(column(dt,"Age")<<GET name=""></GET>
Betreff: Prüfen, ob die Spalte vorhanden ist?ah schön:)
Um zu verhindern, dass Benutzer im Allgemeinen die
As Name
Wie wäre es, in ihrem Code dem Datentabellenobjekt eine Funktion hinzuzufügen, die abfragt, ob die Spalte vorhanden ist:
Datentabelle: Nachrichtenspalte vorhanden (Spaltenname)?
mit JMP18 geliefert:

Betreff: Überprüfen Sie, ob die Spalte vorhanden ist?Ich glaube, dass man das einfach nutzen sollte Als Name() Funktion dafür.Dies erleichtert diese Prüfungen und Sie müssen sich keine Gedanken über Abstände/Großschreibung machen:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << set name("a g e");
Show( Contains( dt << Get Column Names, As Name( "a ge" ) ) );
Show( Contains( dt << Get Column Names, As Name( "S eX" ) ) );
name to check = "N a ME";
Show( Contains( dt << Get Column Names, As Name( name to check ) ) )Betreff: Überprüfen Sie, ob die Spalte vorhanden ist?Nicht wirklich brauchen nach dem Namen fragen, oder?
Der Trick liegt in der
Try(column(dt,"age"), <EM>check for failure</EM>);
Versuchen Sie, die Spalte abzurufen – und prüfen Sie, ob sie fehlschlägt.
Nicht nur ultrakurz – sondern auch eine hervorragende Wahl Robustheit 

Und als Sahnehäubchen fragen Sie die Kolumne nach ihrem Namen:
r=try(column(dt,tn)<<GET name=""></GET>
Ein netter Trick, um einen wohldefinierten Rückgabetyp für vorhandene und nicht vorhandene Spalten zu erhalten. Danke @txnelson 

Betreff: Überprüfen Sie, ob die Spalte vorhanden ist?Die zuverlässigste Methode, die ich gefunden habe, besteht darin, nach dem Namen der Variablen zu fragen: << get name
Es berücksichtigt Leerzeichen usw.
names default to here(1);
dt=current data table();
dt:age << set name("a g e");
tn="age";
r=try(column(dt,tn)<<GET name=""></GET>Betreff: Überprüfen Sie, ob die Spalte vorhanden ist?Mein Faorit: Jims Idee, einfach fragen Sehen Sie sich die Datentabelle für die Spalte an und prüfen Sie, ob sich die Datentabelle beschwert.
Aber auch dieser Ansatz setzt voraus, dass die Schreibweise des Spaltennamens bei der Abfrage zum tatsächlichen Namen passt.
Beispielsweise wird „Alter“ nicht gefunden, wenn Sie nach „Alter“ fragen.
Aber die neue Kolumne :Alter würde alle Verbindungen zwischen trennen :Alter und die vorhandene Spalte :Alter
Dies könnte zu solchen Kollateralschäden führen:
Names Default to Here(1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt:age << set name("a g e");
Show(dt: age [5]); // points to the existing column
Try(:is there a = column(dt,"age"), "answer: no");
new Column("age");
Show(dt: age[5]) // points to the new columnBetreff: Überprüfen Sie, ob die Spalte vorhanden ist?Scheint, als würde jede dieser Lösungen funktionieren. Am robustesten wäre wahrscheinlich der 2. Link, aber er verfügt auch über die meisten Codezeilen.