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 88 89 90 91 92 93 94 95 96 97 98 99 100 101
| Option Compare Database
Const NOMTABLEDICO = "tbl_Dictionnaire"
Const NOMCHAMPTABLE = "Table"
Const NOMCHAMPATTRIBUT = "Attribut"
Const NOMCHAMPTYPE = "TypeAttribut"
Const NOMCHAMPRG = "Description"
Private Function TableExiste(strNom As String, _
oDb As DAO.Database) As Boolean
On Error GoTo error
Dim oTbl As DAO.TableDef
Set oTbl = oDb.TableDefs(strNom)
TableExiste = True
Set oTbl = Nothing
error:
Exit Function
End Function
Private Function TypeFr(intType As Integer) As String
Select Case intType
Case dbText, dbMemo: TypeFr = "Texte"
Case dbBoolean: TypeFr = "Booléen"
Case dbDate, dbTime, dbTimeStamp: TypeFr = "Date"
Case Else: TypeFr = "Numérique"
End Select
End Function
Private Function MAJTexte(strChaine As String) As String
MAJTexte = Chr(34) & Replace(strChaine, Chr(34), Chr(34), , _
, vbTextCompare) & Chr(34)
End Function
Private Sub CreerTableDico(oDb As DAO.Database)
Dim oTbl As DAO.TableDef
Dim oFld As DAO.Field
If Not TableExiste(NOMTABLEDICO, oDb) Then
Set oTbl = oDb.CreateTableDef(NOMTABLEDICO)
With oTbl
.Fields.Append .CreateField(NOMCHAMPTABLE, dbText, 255)
.Fields.Append .CreateField(NOMCHAMPATTRIBUT, dbText, 255)
.Fields.Append .CreateField(NOMCHAMPTYPE, dbText, 15)
Set oFld = .CreateField(NOMCHAMPRG, dbText, 255)
oFld.AllowZeroLength = True
.Fields.Append oFld
End With
oDb.TableDefs.Append oTbl
Else
oDb.Execute "DELETE FROM " & NOMTABLEDICO
End If
End Sub
Public Sub EnrichirDico()
Dim oDb As DAO.Database
Dim oTbl As DAO.TableDef
Dim oFld As DAO.Field
Set oDb = CurrentDb
CreerTableDico oDb
For Each oTbl In oDb.TableDefs
If (oTbl.Attributes And dbSystemObject) = 0 And oTbl.Name <> NOMTABLEDICO Then
For Each oFld In oTbl.Fields
oDb.Execute "INSERT INTO " & NOMTABLEDICO & " VALUES (" & _
MAJTexte(oTbl.Name) & "," & _
MAJTexte(oFld.Name) & "," & _
MAJTexte(TypeFr(oFld.TYPE)) & "," & _
MAJTexte(oFld.name).properties("Description).value & ")"
Next oFld
End If
Next oTbl
Set oFld = Nothing
Set oTbl = Nothing
Set oDb = Nothing
End Sub |
Partager