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.
|