Wie benenne ich eine Tabelle RICHTIG?Alle,
Ich weiß, wie man einer Tabelle einen Namen gibt. Aber manchmal, wenn dieser Name bereits existiert (zufällig oder von links nach vorherigen Ausführungen des Skripts), wird der Name anstelle der Einstellung „Mein Tisch“ auf „Mein Tisch 2“ gesetzt. Wie stelle ich es richtig auf genau das ein, worauf ich es einstellen möchte?
Ich suche nach einem Codeausschnitt, der dies tut – prüft, ob die Tabelle mit diesem Namen existiert, wenn ja, schließt oder benennt die alte um und benennt diese dann mit dem genauen Namen, nach dem ich gefragt habe.
Ich habe die Funktion Try() ausprobiert, verstehe aber wahrscheinlich nicht ganz, wie sie funktioniert. Ich habe einige komplexe if()-Anweisungen ausprobiert, die die Liste aller Tabellen abrufen und Namen usw. durchlaufen. Sie ist zu lang und wird bei einer großen Anzahl von Tabellen erheblich langsamer.
Ich habe mich also gefragt: Was ist die RICHTIGE, herkömmliche Art, eine Tabelle zu benennen, damit Sie sicher sind, dass die Tabelle genau so benannt ist?
Betreff: Wie benenne ich eine Tabelle RICHTIG?Das einzige Problem, das ich bei diesem Ansatz sehe, ist, dass Sie im Grunde versuchen, die Verwendung von „Set Name“ sicherer zu machen, indem Sie stattdessen eine neue Funktion schreiben. Aber in dieser Funktion verwenden Sie erneut Set Name, was zu den gleichen Problemen führt, die Sie zu lösen versuchen ... 
Aber für Ihre unmittelbare Tabelle und damit das Skript selbst sollte es keine Rolle spielen, also sind wir hier gut aufgehoben.
An diesem Punkt würde ich wahrscheinlich einfach alte Tabellen schließen, ohne sie zu speichern.Betreff: Wie benenne ich eine Tabelle RICHTIG?Ja, so habe ich versucht, es anzugehen. Ich verstehe wahrscheinlich nicht ganz, wie Try() funktioniert. Lass es mich auf deine Art versuchen.Betreff: Wie benenne ich eine Tabelle RICHTIG?Wie bereits erwähnt, möchte ich vermeiden, eine Liste aller geöffneten Tabellen abzurufen. Wenn in einem Skriptlauf Hunderte von Übersichtstabellen erstellt werden, nimmt dies viel Zeit in Anspruch.Betreff: Wie benenne ich eine Tabelle RICHTIG?Ich bin sicher, dass verschiedene Community-Mitglieder unterschiedliche Möglichkeiten haben, dieses Problem anzugehen.Hier ist einer, der ein ziemlich einfacher Ansatz zu sein scheint.
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
xt = dt << subset( selected rows( 0 ), selected columns( 0 ) );
setName = Function( {tdt, Name},
{tdt, Name},
Try( Data Table( Name ) << set name( Name || "_Old" ) );
tdt << set name( name );
);
setName( xt, "big class" );Betreff: Wie benenne ich eine Tabelle RICHTIG?Mir ist kein herkömmlicher Weg bekannt (außer der Vermeidung bereits verwendeter Namen). Ich stimme zu, dass es nach längerer Betriebszeit schwierig sein kann, den Überblick über alle geöffneten Fenster zu behalten.
Hier ist eine JSL-Idee, um das zu tun, was Sie beschreiben (getestet in JMP 14). Scheint recht effizient zu sein. Um immer global verfügbar zu sein, kann die Funktion als benutzerdefinierte Funktion() durch ein Startskript hinzugefügt werden, das bei jedem Start von JMP automatisch ausgeführt wird.
// Function for renaming data table if desired name is used by another open table
rename_if_exists = Function({s},
open_tables = Get Window List(Type("data tables")) << Get Window Title();
exists = Loc(open_tables, s)[1];
If(exists,
Data Table(open_tables[exists]) << set name(open_tables[exists] || "_old")
);
s;
);
// Apply...
dt = New Table(rename_if_exists("untitled 28972"), add rows(10));