OVH Cloud OVH Cloud

Description d'un objet Access

2 réponses
Avatar
Loïc
Je cherche =E0 r=E9cup=E9rer (en VBA) la description d'un objet=20
Access (table, requ=EAte, formulaire...) telle qu'elle a =E9t=E9=20
saisie dans la fen=EAtre Base de donn=E9es (propri=E9t=E9s de=20
l'objet).

Je ne la vois appara=EEtre nulle part, pas m=EAme dans=20
MSysObjects o=F9 l=E0, par contre, on peut r=E9cup=E9rer la date=20
de cr=E9ation et de derni=E8re modif de l'objet.

Merci d'avance !

2 réponses

Avatar
Eric
Bonjour Loïc,
Je ne sais pas si ca répond exactement à ton problème mais
ca doit pas en être trop loin:
Essaies ca : bout de code ecrit avec DAO 3.x
Sub PropertyTable()
Dim bd As Database
Dim t As TableDef
Set bd = CurrentDb
' 6 est un index qui représente la 6eme table
' ne pas oublier les tables Msys qui entrent dans la
collection
Set t = bd.TableDefs(6)
Dim p As Property
With t
Debug.Print t.Name
Debug.Print .Attributes
Debug.Print .DateCreated
Debug.Print .LastUpdated
For Each p In .Properties
Debug.Print vbTab & p.Name, p.Type, p.Value
Next p
End With
End Sub

Sub PropertyQuery()
On Error Resume Next 'car p.value plante sur certaines
propriétés
Dim bd As Database
Dim rq As QueryDef
Set bd = CurrentDb
Set rq = bd.QueryDefs(0)
Dim p As Property
With rq
Debug.Print .Name
Debug.Print .DateCreated
Debug.Print .LastUpdated
For Each p In .Properties
Debug.Print vbTab & p.Name, p.Type, p.Value,
p.Inherited
Next p
End With
End Sub

Sub PropertyForm()
Dim objet As AccessObject
For Each f In Application.CurrentProject.AllForms
'voir dans l'aide l'acces à la
' collection : AccessObjectProperties
Debug.Print f.Name
Next f
End Sub
La collection AllForms contient tous les forms de la base
qu'ils soient ouverts ou non contrairement à la collection
Forms.

A devolopper plus en avant pour avoir plus d'info ;-)

A+
Eric



-----Message d'origine-----
Je cherche à récupérer (en VBA) la description d'un objet
Access (table, requête, formulaire...) telle qu'elle a
été

saisie dans la fenêtre Base de données (propriétés de
l'objet).

Je ne la vois apparaître nulle part, pas même dans
MSysObjects où là, par contre, on peut récupérer la date
de création et de dernière modif de l'objet.

Merci d'avance !
.



Avatar
Loïc
Salut Eric,

J'ai trouvé la solution (merci quand même de t'être penché
sur ce petit problème !). En fait, j'étais passé par la
table MSysObjects pour tenter de récupérer la description
(d'une table par exemple). Au passage, j'ai repéré les
colonnes DateCreation et LastUpdated. Mais ces 2 colonnes
correspondent à 2 propriétés d'un objet Document et
portent le même nom. Alors, pourquoi pas Description ? Et
bien il suffit de "forcer le passage", comme souvent sous
Access : même si la propriété Description n'apparaît pas
dans la liste des propriétés d'un objet Document, et même
si elle n'est pas documentée (sauf un chouia dans MSDN
Office Developer), elle est pourtant bien là :

Voici le code (Access2000)

Dim o As AccessObject

For Each o In db.CurrentData.AllTables
If Left(o.Name, 4) <> "MSys" Then 'table système
cmd.Parameters("datecreation") =
db.CurrentDb.Containers(8).Documents(o.Name).DateCreated
cmd.Parameters("datemodif") =
db.CurrentDb.Containers(8).Documents(o.Name).LastUpdated
cmd.Parameters("nomobjet") = o.Name
cmd.Parameters("description") =
db.CurrentDb.Containers(8).Documents(o.Name).Properties
("Description").Value
cmd.Execute
End If
Next

Merci et à +

www.i--land.com

-----Message d'origine-----
Bonjour Loïc,
Je ne sais pas si ca répond exactement à ton problème
mais

ca doit pas en être trop loin:
Essaies ca : bout de code ecrit avec DAO 3.x
Sub PropertyTable()
Dim bd As Database
Dim t As TableDef
Set bd = CurrentDb
' 6 est un index qui représente la 6eme table
' ne pas oublier les tables Msys qui entrent dans la
collection
Set t = bd.TableDefs(6)
Dim p As Property
With t
Debug.Print t.Name
Debug.Print .Attributes
Debug.Print .DateCreated
Debug.Print .LastUpdated
For Each p In .Properties
Debug.Print vbTab & p.Name, p.Type, p.Value
Next p
End With
End Sub

Sub PropertyQuery()
On Error Resume Next 'car p.value plante sur
certaines

propriétés
Dim bd As Database
Dim rq As QueryDef
Set bd = CurrentDb
Set rq = bd.QueryDefs(0)
Dim p As Property
With rq
Debug.Print .Name
Debug.Print .DateCreated
Debug.Print .LastUpdated
For Each p In .Properties
Debug.Print vbTab & p.Name, p.Type, p.Value,
p.Inherited
Next p
End With
End Sub

Sub PropertyForm()
Dim objet As AccessObject
For Each f In Application.CurrentProject.AllForms
'voir dans l'aide l'acces à la
' collection : AccessObjectProperties
Debug.Print f.Name
Next f
End Sub
La collection AllForms contient tous les forms de la base
qu'ils soient ouverts ou non contrairement à la
collection

Forms.

A devolopper plus en avant pour avoir plus d'info ;-)

A+
Eric



-----Message d'origine-----
Je cherche à récupérer (en VBA) la description d'un
objet


Access (table, requête, formulaire...) telle qu'elle a
été

saisie dans la fenêtre Base de données (propriétés de
l'objet).

Je ne la vois apparaître nulle part, pas même dans
MSysObjects où là, par contre, on peut récupérer la date
de création et de dernière modif de l'objet.

Merci d'avance !
.

.