Schließen Sie alle Datentabellen außer einer VariablennamenlisteHeute versuche ich, alle Datentabellen bis auf eine ausgewählte Anzahl zu schließen, da ein sich wiederholender Vorgang unter Verwendung von Datentabellennamenvariablen ausgeführt wird.Ich habe drei Tische.Eine, in der Ergebnisse gesammelt werden, eine, in der ungültige Ergebnisse der ersten Tabelle gesammelt werden, und eine, die der Benutzer öffnet, damit das Skript weiß, welche ID-Werte zum Vergleich verwendet werden sollen.Ich habe eine Diskussion gefunden, in der Tabellen geschlossen werden können (sie wurde hier in mein Skript aufgenommen), aber sie verwendet zitierten Text in einer Liste für die Tabellennamen.Da meine Benutzer für jede Iteration eine andere Datentabelle für die dritte Tabelle auswählen, wie kann ich eine Datentabellennamensvariable verwenden, um sie in die Liste aufzunehmen und sie am Ende der Verarbeitung offen zu lassen?
DontClose = {CompareTable, CollectionTable, IDTable}; // Example names of tables you want to leave open
//CompareTable = "Validation Table"
//Collection Table = "Unmatched Values"
//IDTable = could be anything but I want to leave this open once the processing loop is completed
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
print( Data Table(i) << Get Name ) ;
If( Contains( DontClose, Data Table( i ) << get name ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);Betreff: Alle Datentabellen außer einer Variablennamenliste schließenDas könnte funktionieren, aber das kommt dem Generieren einer Close()-Anweisung für jede Tabelle nach Abschluss ihrer Verwendung nahe. Ich habe versucht, etwas Eleganteres zu verwenden, das weniger Linien verwendet. Die andere ähnliche Option, die ich versucht habe, besteht darin, alle Tabellennamen in eine Liste aufzunehmen und eine Keep-Liste zum Vergleichen zu haben. Das Problem besteht darin, dass eine der drei Tabellen, die geöffnet bleiben müssen, vom Benutzer ausgewählt wird und sich daher von Verwendung zu Verwendung ändert. Dies ist für mich der einzige Grund, Alias-Tabellennamen zu verwenden. Das und sobald ich dies mit jemandem teile, wird er den Tabellennamen ändern, in dem sich das Skript befindet, sodass ich es vorziehen würde, Datentabellennamen nicht fest zu codieren, wenn ich das nicht brauche. Es ist ein ziemliches Rätsel! Danke für deine Antwort!Betreff: Alle Datentabellen außer einer Variablennamenliste schließenIch kann nicht das gesamte Skript veröffentlichen. Es greift auf proprietäre Server zu und es würde viel Zeit in Anspruch nehmen, eine anonyme Version zu erstellen. Aber Sie haben mir den Eindruck vermittelt, dass ich das nicht berücksichtigt habe und es deshalb aufgehängt wird. Ich werde meine Theorie testen und berichten!
DANKE SCHÖN!Betreff: Alle Datentabellen außer einer Variablennamenliste schließenDa Sie alle zu zerstörenden Datentabellen generieren, warum fügen Sie nicht jeden Tabellenverweis bei der Erstellung in eine Liste ein? Sie können die Liste dann durchlaufen, wenn es Zeit ist, sie zu schließen.
Betreff: Alle Datentabellen außer einer Variablennamenliste schließenKannst du dein Skript posten?
Beim Schließen von Tabellen mit verknüpften Übersichtstabellen wird die Übersichtstabelle automatisch geschlossen.
Betreff: Alle Datentabellen außer einer Variablennamenliste schließenOh mein! Ich habe zu früh gesprochen. Ich habe mit diesem Skript das Öffnen und Schließen von Tabellen getestet.
Mein Skript öffnet zwei Tabellen, die für die vollständige Ausführung des Skripts offen bleiben müssen. Eines ist das Ziel für Vergleiche, die nicht gleich sind, und das andere enthält eine Liste von IDs (die ein Benutzer auswählt). Dann ruft es Daten von Servern ab, führt eine Vielzahl von Zusammenfassungen, Transpositionen und anderen Datenmanipulationen durch, kopiert die Ergebnisse in die Tabelle, in der sich das Skript befindet, und die Unterschiede in die Zieltabelle (beide müssen offen bleiben) und schließt dann die gesamte Zusammenfassung Tabellen und von den Servern generierte Tabellen, bevor mit der nächsten ID fortgefahren wird.
Ich erhalte ständig eine Fehlermeldung wie diese:
Die Datentabelle{28} kann beim Zugriff oder bei der Auswertung von „Data Table“, Data Table/*###*/(i) nicht gefunden werden.
weil die Tischnummer verloren geht?Betreff: Alle Datentabellen außer einer Variablennamenliste schließen@Wendy_Murphrey Das ist das Ticket!Funktioniert genau so, wie ich es brauche.Da dieses Skript Hunderte von Tabellen öffnen oder erzeugen kann, ist es perfekt für meine Bedürfnisse.
Danke danke danke!Ich lerne jeden Tag etwas Neues in JSL!
Betreff: Alle Datentabellen außer einer Variablennamenliste schließen@guillaumebugnon Ich sehe, dass ALLE Tabellen diesen Variablensatz benötigen würden.Das Skript, das ich schreibe, öffnet und generiert eine Vielzahl von Tabellen, sodass dies einen Schritt hinzufügen würde, der meiner Meinung nach am besten für weniger intensive Zwecke verwendet werden sollte.Letztendlich möchte ich eine Liste von IDs haben (könnte über 200 sein) und das Skript einen Prozess ausführen lassen, um mindestens 75 Zusammenfassungen für jede ID zu erstellen.Obwohl dies funktionieren wird, scheint die Lösung von Wendy Murphrey genau das Richtige für meine Anwendung zu sein.
Vielen Dank, dass Sie sich die Zeit genommen haben, mir bei meinem Dilemma zu helfen!
Betreff: Alle Datentabellen außer einer Variablennamenliste schließenHier ist ein Ansatz, der es Ihnen ermöglicht, die Datentabellenverweise zu verwenden:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt2 = Open( "$SAMPLE_DATA/Fitness.jmp" );
dt3 = Open( Pick File( "Select File", "$DOCUMENTS" ) );
dontClose = Eval List( {dt, dt2, dt3} );
Show( dontClose );
// Loop backwards through the list, so the table numbers do not change
For( i = N Table(), i > 0, i--,
If( Contains( DontClose, Data Table( i ) ),
Continue(),
Close( Data Table( i ), "No Save" )
)
);
Hoffentlich hilft das!
Betreff: Alle Datentabellen außer einer Variablennamenliste schließenHallo,
Sie können auch eine Tabellenvariable für jede JMP-Datentabelle festlegen:
dt << Set Table Variable("ToClose","N");Dann können Sie eine Schleife ausführen und den Wert überprüfen:
For( i = N Table(), i > 0, i--,
vtoclose = Data Table(i) << Get Table Variable ("ToClose") ;
If ( Contains(vtoclose,"Y") >=1 ,
Close(Data Table(i),NoSave),
print("ToClose is not set to Y : do not close")
);
);