Tester l’existence d’une table
Comment savoir si une table (dont on connaît le nom) existe dans une base de données ?
Un peu de VBA…
Il y a plusieurs manières de le faire. Voici une fonction qui peut faire l’affaire (à recopier dans un module standard) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
' --- ' TEST DE L'EXISTENCE D'UNE TABLE ' --- ' Function TableExiste( _ db As DAO.Database, _ ByVal strTable As String) _ As Boolean Dim tdf As DAO.TableDef ' Parcourir toutes les tables de la base For Each tdf In db.TableDefs If tdf.Name = strTable Then ' La table a été trouvée... TableExiste = True Exit Function End If Next ' La table n'existe pas... TableExiste = False End Function |
La fonction renvoie True
si la table (ou la liaison de table) existe, dans la base de données spécifiée. Elle renvoie bien sûr False
sinon.
Pour plus de détails sur les références, consultez cette page.
Pour tester…
- Faites apparaître la fenêtre Exécution (
CTRL
+G
). - Tapez (sur une seule ligne) quelque chose comme :
1 |
? TableExiste(CurrentDb, "tbl Clients") |
Si vous obtenez Vrai
(True
)… c’est que la table existe bien dans la base actuelle.
Jeff > Exact (comme je le disais en début d’article, il y a bien plusieurs manières de faire).
Pour faire court, on peut aussi faire :
Voire remplacer la ligne
strNom
par celle-ci, pour cibler des versions plus anciennes d’Access :Ouala !
il existe une méthode directe sans boucle à l’aide de la collection AllTables de object CurrentData:
Public Function TableExist(strTable As String) As Boolean
Dim DateStr As String
On Error GoTo ErrH
If Len(strTable) > 0 Then
DateStr = Application.CurrentData.AllTables(strTable).DateCreated
TableExist = True
Else
TableExist = False
End If
ExitH:
Exit Function
ErrH:
If Err.Number = 2467 Then ‘object inexistant
strTable = False
Resume ExitH
End Function
Adéquat > Content que ça puisse rendre service ! 🙂
Bonjour Hervé !
Même si celà fait bientôt 5 ans que tu as posté cette astuce, je voudrai quand même te remercier car cette function m’a été très utile aujourd’hui 🙂
Encore merci et bonne continuation !