Question

J'ai une base de données Access dans laquelle je dépose la table, puis je la crée à nouveau.Cependant, je dois pouvoir tester la table au cas où elle serait supprimée mais non créée (c'est-à-direquand quelqu'un arrête le package DTS juste après son démarrage -roll-eyes- ).Si je faisais cela dans la base de données SQL, je ferais simplement :

IF (EXISTS (SELECT * FROM sysobjects WHERE name = 'Table-Name-to-look-for'))
BEGIN
drop table 'Table-Name-to-look-for'
END

Mais comment faire cela pour une base de données Access ?

Réponse facultative :existe-t-il un moyen pour que le package DTS ignore l'erreur et passe simplement à l'étape suivante plutôt que de vérifier s'il existe ?

SQL Serveur 2000

Était-ce utile?

La solution

Je ne sais pas si vous pouvez interroger la table des objets système dans une base de données Access à partir d'un package DTS.

Si ce n'a pas fonctionne, pourquoi ne pas simplement essayer de faire un SELECT * à partir de la table Access en question, puis attraper l'erreur si ça échoue ?

Autres conseils

Essayez le même T-SQL, mais dans MS ACCESS, la table des objets sys est appelée :MSysObjects.

Essaye ça:

SELECT * FROM MSysObjects WHERE Name = 'your_table';

et voyez si cela fonctionne à partir de là.

Vous pouvez consulter ces tableaux si vous allez dans Outils -> Options -> Affichage (un onglet) -> et cochez Objets cachés, Objets système.Vous pouvez donc voir les deux.Si vous ouvrez la table, vous devriez voir les noms de vos tables, vos requêtes, etc.Ne modifiez pas cela manuellement ou la base de données pourrait paniquer :)

Martin.

P.D. :Votre If Exists doit également vérifier le type d'objet :

IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[Your_Table_Name]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)

Microsoft Access possède une table système appelée MSysObjects qui contient une liste de tous les objets de base de données, y compris les tables.Les objets table sont de type 1, 4 et 6.

Il est important de référencer le type :

...Où Name='TableName' et tapez (1,4,6)

Sinon, ce qui est renvoyé pourrait être un objet autre qu'une table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top