Comment peut on voir si une table est presente (existe) dans une base access en

Résolu
cs_Sead Messages postés 13 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 13 février 2010 - 18 nov. 2005 à 15:43
Neokript Messages postés 18 Date d'inscription jeudi 19 janvier 2006 Statut Membre Dernière intervention 22 avril 2010 - 3 mars 2006 à 16:58
Comment peut on voir si une table est presente (existe) dans une base access en code vba

Je pensais faire un if exists mais apparement, ca ne marche pour pour vba... On m'a conceillé de parcourir un array d'objet table mais ca ne m'est pas trop parlant.....

5 réponses

olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
18 nov. 2005 à 16:23
Function fExistTable(strTableName As String) As Integer

Dim db As Database
Dim i As Integer
Set db = DBEngine.Workspaces(0).Databases(0)
fExistTable = False
db.TableDefs.Refresh
For i = 0 To db.TableDefs.Count - 1
If strTableName = db.TableDefs(i).Name Then
'la table existe
fExistTable = True
Exit For
End If
Next i
Set db = Nothing
End Function

Rollerman
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
18 nov. 2005 à 17:45
Bonsoir,

Personnelement, je récupère le noms des tables d'une base de données
dans une ListBox. Dans cet exemple les tables de la base de données
Biblio.mdb (que tous le monde connait). Je place un CommandButton et
une ListBox sur mon UserForm et je place ce dode.(Placer la référence à Access)

(J'ai essayé avec la fonction de olixelle, mais je n'ai aucun résultat).



Private Sub CommandButton1_Click()

Dim AppAccess As Access.Application

Dim i, j As Integer

Application.ScreenUpdating = False

Set AppAccess = CreateObject("Access.Application")

With AppAccess

.OpenCurrentDatabase ("C:\Program Files\Microsoft Visual Studio\vb98\Biblio.mdb")

j = 6

For i = 0 To .CurrentDb.TableDefs.Count - 1

If Left(UCase(.CurrentDb.TableDefs(i).Name), 4) <> "MSYS" Then

ListBox1.AddItem .CurrentDb.TableDefs(i).Name

j = j + 1

End If

Next i

End With

AppAccess.Quit

Set AppAccess = Nothing

Application.ScreenUpdating = True

End Sub



jpleroisse



Si une réponse vous convient, cliquez Réponse Acceptée.
0
olixelle Messages postés 506 Date d'inscription vendredi 30 juillet 2004 Statut Membre Dernière intervention 3 mars 2008 2
19 nov. 2005 à 15:28
jpleroisse, mon code ne marchera que dans la base access concernée
alors que le tien peut etre mis dans un vbs ou autre programme


Rollerman
0
cs_Sead Messages postés 13 Date d'inscription mardi 28 octobre 2003 Statut Membre Dernière intervention 13 février 2010
21 nov. 2005 à 14:11
Impeccable Rollerman, je me suis servi de ta fonction et ca fonctionne parfaitement. J'ai juste légérement modifié par:

Dim dbs As Database
Dim App_Path As String


App_Path = Application.CurrentProject.Path & "" & "proj.mdb"


et j'y integre un Select Case car je dois faire executer une instruction differente par table existante prédéfinie.

jpleroisse je n'ai pas testé ta source car la soluce de rollerman me paraissait plus simple


mais je te remercie egalement
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Neokript Messages postés 18 Date d'inscription jeudi 19 janvier 2006 Statut Membre Dernière intervention 22 avril 2010
3 mars 2006 à 16:58
Bonjour à tous j'aurai voulu savoir comment on pourrait faire cela sous visual basic 2005 svp ?
0
Rejoignez-nous