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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
'Date dernière modification de ce script : 08/08/2008
'Script à copier et à coller dans un nouveau module d'une base exemple
Function LierTablesDorsale(StrBaseFrontale As String) As Boolean
On Error GoTo Err_LierTablesDorsale
Dim strMotPasse As String
Dim strConnect As String
Dim strNomsTables() As String
Dim strTemp, strDbPath As String
Dim i As Integer
Dim oDb As DAO.Database
Dim oDbSource As DAO.Database
Dim oTbl As DAO.TableDef
Dim oTblSource As DAO.TableDef
strPass = "thanks"
strDbPath = CurrentDb.Name
StrBaseFrontale = Left(strDbPath, Len(strDbPath) - 4) & " " &
StrChildbaseName
DBEngine.CreateDatabase StrBaseFrontale, dbLangGeneral
'dans StrBaseFrontale on trouve le chemin de ma cible style "C:\test.mdb"
strConnect = "MS Access;pwd=" & strPass & ";DATABASE=" & StrBaseFrontale
Set oDb = DBEngine.OpenDatabase(StrBaseFrontale, dbDriverComplete, _
False, strConnect)
Set oDbSource = CurrentDb
'Récupère toutes les table de la base
For Each oTblSource In oDbSource.TableDefs
If (oTblSource.Attributes And dbSystemObject) = 0 Then
strTemp = strTemp & oTblSource.Name & "|"
End If
Next
oDbSource.Close: Set oDbSource = Nothing
Debug.Print strTemp
strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
For i = 0 To UBound(strNomsTables)
Debug.Print i, strNomsTables(i)
'Initialisation de Table def
Set oTbl = oDb.CreateTableDef(strNomsTables(i))
Debug.Print "Affectation OK"
'Conection à la Frontale
oTbl.Connect = strConnect
Debug.Print "Connection OK"
'Désignation de la table à attacher
oTbl.SourceTableName = strNomsTables(i)
Debug.Print "Désignation OK"
'Modification de Tabledefs et mise à jour de la définition
'C'est ici que cela coince !
' Le moteur de base de données Microsoft Jet n'a pas pu
' trouver l 'objet 'Nom_de_la_table'.
' Assurez-vous que l'objet existe et que vous avez
' correctement saisi son nom et son chemin d'accès.
oDb.TableDefs.Append oTbl
Debug.Print "Definition OK"
Next i
oDb.TableDefs.Refresh
Exit_LierTablesDorsale:
Set oDbSource = Nothing
Set oTbl = Nothing
Set oDb = Nothing
Exit Function
Err_LierTablesDorsale:
Select Case Err.Number
Case 3012
Debug.Print Err.Number, Err.Description
Resume Next
Case Else
Debug.Print Err.Number, Err.Description
Resume Exit_LierTablesDorsale
End Select
End Function
'Pour lancer le script, dans la fenetre de debogage,
'tapez :
' LierTablesDorsale "Frontale" |
Partager