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 56 57 58
| If Me.id_type_db <> "ODBC" Then
'Définit la chaine de connexion permettant la liaison des tables
strConnect = "MS Access;pwd=;DATABASE=" & strCheminBd
'Instancie l'objet Database de la base protégée
Set oDbSource = DBEngine.OpenDatabase(strCheminBd, , True, strConnect)
Else
Set ws = DBEngine.Workspaces(0)
'Définit la chaine de connexion permettant la liaison des tables
strConnect = "ODBC; DATABASE=" & Me.id_nom_db_sql & ";uid=;pwd=;DSN =" & Me.id_connexion
'Instancie l'objet Database de la base protégée
Set oDbSource = ws.OpenDatabase("" & Me.id_connexion, dbDriverNoPrompt, False, strConnect)
End If
'Instancie l'objet Database de la base courante
Set oDb = CurrentDb
'Parcours l'ensemble des tables de la base de données protégée
'et stocke leur nom
For Each oTblSource In oDbSource.TableDefs
'ignore les tables system
If (oTblSource.Attributes And dbSystemObject) = 0 Then
strTemp = strTemp & oTblSource.Name & "|"
End If
Next
'Ferme la base de données sources (impératif pour la liaison)
oDbSource.Close: Set oDbSource = Nothing
'parcours le tableau de noms de tables
strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
For i = 0 To UBound(strNomsTables)
'Crée une nouvelle table dans la base de données courante
nom_fichier = Mid(strNomsTables(i), 5, Len(strNomsTables(i)) - 4)
' DoCmd.TransferDatabase acLink, "ODBC Database", strConnect, _
' acTable, nom_fichier, strNomsTables(i), , False
Set oTbl = oDb.CreateTableDef(nom_fichier)
'Lie les deux tables
oTbl.Connect = strConnect
oTbl.SourceTableName = strNomsTables(i)
'Ajoute la table à la base de données
oDb.TableDefs.Append oTbl
Next i
'Rafraichit la liste des tables
oDb.TableDefs.Refresh
strTemp = "" |
Partager