Wie kann festgestellt werden, ob eine Datentabelle bereits geöffnet ist?So habe ich es vor JMP 8 gemacht:
tableIsOpen = Function( {tname},
{dt, rv = 0},
Try(
dt = Data Table( tname );
rv = 1;
);
rv;
);
Dies funktioniert in JMP Version 8 nicht, da die DataTable-Funktion einen Dateidialog öffnet, wenn die Tabelle noch nicht geöffnet ist. Der Benutzer kann jederzeit auf „Abbrechen“ klicken, aber das ist nervig.
Vielen Dank für jede Hilfe.
Tommy
Betreff: Wie kann festgestellt werden, ob eine Datentabelle bereits geöffnet ist?Danke für den Code. Ich probiere es jetzt aus.
Ich wünschte, es gäbe eine einfachere Möglichkeit, nach geöffneten Datendateien zu suchen.Betreff: Wie kann festgestellt werden, ob eine Datentabelle bereits geöffnet ist?Sie können alle offenen Tabellen durchlaufen, indem Sie eine Zahl an Data Table() übergeben und Namen vergleichen.
tableIsOpen = Function( {tname},
{rv = 0, i},
For( i = 1, i < N Table() + 1 & rv == 0, i++,
If( Lowercase( Data Table( i ) << Get Name ) == Lowercase( tname ),
rv = 1
)
);
rv;
);
Bearbeiten: mit einer Option „<="
tableIsOpen = Function( {tname},
{rv = 0, i},
For( i = 1, i <= N Table() & rv == 0, i++,
If( Lowercase( Data Table( i ) << Get Name ) == Lowercase( tname ),
rv = 1
)
);
rv;
);
(Die Forensoftware mag „kleiner als“ oder „gleich“ wirklich nicht, weshalb ich einfach „kleiner als“ verwende und 1 hinzufüge.)
Betreff: Wie kann ich feststellen, ob eine Datentabelle bereits geöffnet ist?Ich bin auf diesen Thread gestoßen, als ich nach einer ähnlichen Methode suchte, um beim Testen von Code noch offene Datentabellen am Anfang meines Skripts zu schließen, anstatt sie zu zählen. Ich habe eine Kombination aus dem hier und in einem anderen Thread geposteten Code verwendet. Ich dachte, ich poste es, falls es für jemanden, der auf diesen Thread stößt, nützlich ist:
// list of table names that I want to make sure are closed before running the script
tname = { "TABLE1", "TABLE2", "TABLE3", "TABLE4" };
// loop to see if open tables match the name in the list above, then close them
// need to restart the i counter to i = 0 because it seems closing a table changes the 'i' number associated with the table
For( i = 1, i <= N Table(), i++,
If( N Rows (Loc( tname, Data Table(i) << Get Name ) ) > 0,
Close(Data Table(i), no save);
i = 0;
)
);
Betreff: Wie kann ich feststellen, ob eine Datentabelle bereits geöffnet ist?Ich würde das Schließen vereinfachen, indem ich die Try()-Funktion verwende
</CODE></PRE>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
tname = {"TABLE1", "TABLE2", "TABLE3", "TABLE4"};
For Each( {dt}, tname,
Try( Close( data table( dt ), nosave ) )
);