Come determinare se una tabella dati è già aperta?Ecco come lo facevo prima di JMP 8:
tableIsOpen = Function( {tname},
{dt, rv = 0},
Try(
dt = Data Table( tname );
rv = 1;
);
rv;
);
Questo non funziona in JMP versione 8 perché la funzione DataTable aprirà una finestra di dialogo file se la tabella non è già aperta. L'utente può sempre premere "Annulla" ma è fastidioso.
Grazie per qualsiasi aiuto.
Tommy
Ri: Come determinare se una tabella dati è già aperta?Grazie per il codice. Lo sto provando adesso.
Vorrei che ci fosse un modo più semplice per verificare la presenza di file di dati aperti.Ri: Come determinare se una tabella dati è già aperta?Puoi scorrere tutte le tabelle aperte passando un numero a Data Table() e confrontare i nomi.
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;
);
modifica: con un'opzione "<="
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;
);
(Al software del forum in realtà non piace inferiore o uguale a, motivo per cui utilizzo semplicemente minore di e aggiungo 1.)
R: Come determinare se una tabella dati è già aperta?Mi sono imbattuto in questa discussione cercando qualcosa di simile per chiudere le tabelle di dati aperti in sospeso all'inizio del mio script durante il test del codice, invece di contarle. Ho usato una combinazione del codice pubblicato qui e in un'altra discussione. Ho pensato di pubblicarlo nel caso in cui possa essere utile a qualcuno che si imbatte in questa discussione:
// 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;
)
);
R: Come determinare se una tabella dati è già aperta?Semplificherei la chiusura utilizzando la funzione Try()
</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 ) )
);