Comment déterminer si une table de données est déjà ouverte ?Voici comment je procédais avant JMP 8 :
tableIsOpen = Function( {tname},
{dt, rv = 0},
Try(
dt = Data Table( tname );
rv = 1;
);
rv;
);
Cela ne fonctionne pas dans JMP version 8 car la fonction DataTable ouvrira une boîte de dialogue de fichier si la table n'est pas déjà ouverte. L'utilisateur peut toujours appuyer sur "annuler" mais c'est ennuyeux.
Merci pour toute aide.
Tommy
Re : Comment déterminer si une table de données est déjà ouverte ?Merci pour le code. Je l'essaie maintenant.
J'aimerais qu'il y ait un moyen plus simple de vérifier le fichier de données ouvert.Re : Comment déterminer si une table de données est déjà ouverte ?Vous pouvez parcourir toutes les tables ouvertes en passant un numéro à Data Table() et comparer les noms.
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;
);
modifier : avec une 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;
);
(Le logiciel du forum n'aime vraiment pas inférieur ou égal, c'est pourquoi j'utilise simplement moins que et j'ai ajouté 1.)
Re : Comment déterminer si une table de données est déjà ouverte ?Je suis tombé sur ce fil de discussion à la recherche d'une solution similaire pour fermer les tables de données ouvertes en permanence au début de mon script lors du test du code, au lieu de les compter. J'ai utilisé une combinaison du code publié ici et d'un autre fil de discussion. Je me suis dit que ce serait utile pour ceux qui tomberaient sur ce fil de discussion :
// 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;
)
);
Re : Comment déterminer si une table de données est déjà ouverte ?Je simplifierais la fermeture en utilisant la fonction 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 ) )
);