| Versions : 2000 et supérieures 
 Ce code permet de lister l'ensemble des tables et des champs d'une base de données. Le résultat est envoyé dans un treeview ce qui permet d'avoir une vue globale des propriétés de l'ensemble des champs de la base de données. 
 Private Sub Commande1_Click()
On Error Resume Next
Dim Pere As String
Dim T As DAO.TableDef
Dim F As DAO.Field
Dim P As DAO.Property
Dim DB As DAO.Database
TreeView0.Nodes.Clear
For Each T In DB.TableDefs
    
    If T.Attributes = 0 Or (T.Attributes <> 0 And Me.chk_systeme) Then
    TreeView0.Nodes.Add , , T.Name, T.Name
    
    For Each F In T.Fields
        Pere = T.Name
        TreeView0.Nodes.Add Pere, tvwChild, Pere & "#" & _
             F.Name, F.Name
        Pere = Pere & "#" & F.Name
        
        For Each P In F.Properties
        TreeView0.Nodes.Add Pere, tvwChild, Pere & F.Name & _
            "#" & P.Name, P.Name & " : " & LireProperty(F, P.Name)
        Next P
    Next F
    End If
Next T
End Sub
  
  
Private Function Renvoi_Type(ByVal n As Integer) As String
        Dim s As String
        Select Case n
            Case dbBoolean
                s = "Oui/Non"
            Case dbByte
                s = "Octet"
            Case dbInteger
                s = "Entier"
            Case dbLong
                s = "Entier long"
            Case dbCurrency
                s = "Monétaire"
            Case dbSingle
                s = "Réel S"
            Case dbDouble
                s = "Réel D"
            Case dbDate
                s = "Date"
            Case dbBinary
                s = "Binaire"
            Case dbText, dbChar
                s = "Texte"
            Case dbLongBinary, dbVarBinary
                s = "Binaire 2"
            Case dbMemo
                s = "Mémo"
            Case dbGUID
                s = "GUID"
            Case dbBigInt
                s = "Numérique HP"
            Case dbNumeric
                s = "Numérique"
            Case dbDecimal
                s = "Décimal"
            Case dbFloat
                s = "Flottant"
            Case dbTime, dbTimeStamp
                s = "Heure"
        End Select
        Renvoi_Type = s
    End Function
Private Function LireProperty(Objet As Object, _
      Propriete As String) As String
On Error GoTo err
If TypeOf Objet Is DAO.Field And Propriete = "Type" Then
LireProperty = Renvoi_Type(Objet.Properties(Propriete))
Else
LireProperty = Objet.Properties(Propriete)
End If
err:
End Function
Private Sub Commande12_Click()
DoCmd.Close
End Sub
Private Sub Form_Load()
Me.chk_systeme = True
End Sub
 Le processus est en fait trés simple. Il s'agit de lire chaque table puis pour chaque table, accéder à chacun des champs et enfin, pour chaque champ, lire une à une les propriétés. La fonction renvoi_type permet d'afficher une valeur explicite du type du champ et non un numérique. Quant à la fonction lirePropriete, elle permet d'accéder à la valeur d'une propriété et ne pas faire boguer le programme principal si la propriété est inaccessible. 
 N'hésitez surtout pas à télécharger la base de données exemple en fichier Zip. Elle vous permet, en plus, de sélectionner une autre base de données que celle en cours d'utilisation. 
 |