Lier une table en VBA
J’ai une application Access en réseau, avec une base frontale liée à une base dorsale. J’ai créé une nouvelle table dans la base dorsale, à l’aide de l’article Exécution une instruction SQL sur une base dorsale. Comment faire en sorte, en VBA, que cette nouvelle table soit maintenant liée à la base frontale ?
Le code
Voici une procédure VBA, à recopier dans un module standard de la base frontale :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
' --- ' LIAISON D'UNE TABLE DORSALE ' --- ' Function LierTable( _ ByVal strTable As String, _ ByVal strBase As String) _ As String Dim db As DAO.Database Dim tdf As DAO.TableDef Dim intI As Integer Dim strNomLocal As String ' Vérifier que la base de données pointée existe bien If Dir(strBase) = "" Then MsgBox "Base introuvable !", vbExclamation LierTable = "" Exit Function End If ' Trouver un nom pour la table liée ' (dans la base actuelle) Set db = CurrentDb strNomLocal = strTable intI = 1 While TableExiste(db, strNomLocal) strNomLocal = strTable & intI intI = intI + 1 Wend ' Créer une table liée On Error GoTo LierTableErr Set tdf = New DAO.TableDef With tdf .Name = strNomLocal .SourceTableName = strTable .Connect = ";DATABASE=" & strBase End With ' Ajouter la liaison à la base actuelle db.TableDefs.Append tdf db.TableDefs.Refresh Application.RefreshDatabaseWindow ' Libérer les objets utilisés Set tdf = Nothing Set db = Nothing LierTable = strNomLocal Exit Function LierTableErr: MsgBox "Erreur : " & err.description Exit Function Exit Function |
Attention : ce bout de code fait lui-même appel à la fonction TableExiste()
, qui est donnée dans l’article Tester l’existence d’une table. Pensez à recopier aussi cette fonction 🙂
Pour tester…
- Faites apparaître la fenêtre Exécution (
CTRL
+G
). - Tapez (sur une seule ligne) quelque chose comme :
1 |
? LierTable("tbl Clients", "C:...dorsale.mdb") |
- Le premier paramètre est le nom de la table à lier, table qui est supposée exister dans la base dorsale !
- Le deuxième paramètre est le chemin de la base dorsale.
La fonction renvoie comme résultat le nom de la table liée. En général, ce nom est celui de la table d’origine (vous devriez obtenir tbl Clients
). Mais si la base frontale contenait déjà une table de ce nom, la fonction VBA ajoute un chiffre derrière (par exemple : tbl Clients1
).
Bonjour, Très ravi d’avoir trouver votre site, très enrichissant. Mais surtout un grand merci à toi pour tous ce que vous faites pour nous les novices.