OVH Cloud OVH Cloud

Pb avec AccessObjectProperties

4 réponses
Avatar
Eric
Bonjour,

Je souhaite énumérer les propriétés d'un AccessObject (celles auxquelles
on accède par un clic droit sur l'objet dans la fenêtre de la base de
données :Description, date de création ...), en l'occurence celles des
états.
Est il possible de la faire sans passer par les collections Containers et
Documents ? (Référence DAO)

J'ai écrit ce code :
Sub ProprieteEtat()
Dim e As AccessObject, prp As AccessObjectProperty
'On Error Resume Next
For Each e In CurrentProject.AllReports
Debug.Print e.Name
For Each prp In e.AccessObjectProperties
Debug.Print vbTab prp.Name, prp.Value
Next prp
Next e
End Sub

J'obtiens le message : Propriété ou méthode non gérée par cet objet sur
la ligne : For Each prp In e.AccessObjectProperties

Alors j'ai essayé :
Sub ProprieteEtat()
Dim e As AccessObject, prp As Property
'On Error Resume Next
For Each e In CurrentProject.AllReports
Debug.Print e.Name, e.Properties.Count
For Each prp In e.Properties
Debug.Print prp.Name, prp.Value
Next prp
Next e
Stop
End Sub

Sans plus de succès, e.properties.count me renvoie 0, alors que les
propriétés de l'état sont renseignées.

Un coup de main serait le bienvenu.

Merci d'avance

Eric

4 réponses

Avatar
?Lo»Paris?
Eric wrote:
Bonjour,

Je souhaite énumérer les propriétés d'un AccessObject (celles
auxquelles on accède par un clic droit sur l'objet dans la fenêtre de
la base de données :Description, date de création ...), en
l'occurence celles des états.
Est il possible de la faire sans passer par les collections
Containers et Documents ? (Référence DAO)

J'ai écrit ce code :
Sub ProprieteEtat()
Dim e As AccessObject, prp As AccessObjectProperty
'On Error Resume Next
For Each e In CurrentProject.AllReports
Debug.Print e.Name
For Each prp In e.AccessObjectProperties
Debug.Print vbTab prp.Name, prp.Value
Next prp
Next e
End Sub

J'obtiens le message : Propriété ou méthode non gérée par cet objet
sur la ligne : For Each prp In e.AccessObjectProperties

Alors j'ai essayé :
Sub ProprieteEtat()
Dim e As AccessObject, prp As Property
'On Error Resume Next
For Each e In CurrentProject.AllReports
Debug.Print e.Name, e.Properties.Count
For Each prp In e.Properties
Debug.Print prp.Name, prp.Value
Next prp
Next e
Stop
End Sub

Sans plus de succès, e.properties.count me renvoie 0, alors que les
propriétés de l'état sont renseignées.

Un coup de main serait le bienvenu.

Merci d'avance

Eric


Bonjour Eric,

Non, tu ne peux par faire cela avec un For Each, comme tu le dit tu ne
dispose pas d'une collection "Properties" (qui est à 0)

Utilise simplement directement les propriétés :

If e.IsLoaded Then
.Print e.CurrentView '// Err si objet fermé
End If
Debug.Print e.DateCreated
Debug.Print e.DateModified
Debug.Print e.FullName
Debug.Print e.IsLoaded
Debug.Print e.Name
Debug.Print e.Type

Ce sont les même pour tout les objet Access (AccessObject), si vraiment tu
veux plus de détail utilise un objet Form ou Report :

Sub ProprieteEtat()
Dim a As AccessObject
Dim e As Access.Report, prp As Property
'On Error Resume Next

For Each a In CodeProject.AllReports
DoCmd.Echo False
DoCmd.OpenReport a.Name, acDesign, , , , acHidden
DoCmd.Echo True
For Each e In Application.Reports
Debug.Print e.Name
For Each prp In e.Properties
Debug.Print prp.Name, prp.Value
Next prp
DoCmd.Close acReport, a.Name
Next e
Next a
End Sub

Salutations

--
°Laurent°

Avatar
Eric
Bonjour °Laurent°

Merci beaucoup pour ta réponse.

Mon problème est le suivant sous Access2000 :
Je voudrais lire les infos qui résident dans la boite des propriétés des
états quand on fait un clic droit sur les états qui figurent dans
l'onglet Etats de la fenêtre base de données. On y trouve :
le nom, le type, la description, créé le , modifié le, le propriétaire et
l'attribut masqué (Oui/Non).

Avec le code ci-dessous, j'arrive à lire certaines propriétés mais en
utilisant DAO.

Sub proprieteEtat2()
Dim bd As DAO.Database, prp As DAO.Property, e As AccessObject
Set bd = CurrentDb
For Each e In CurrentProject.AllReports
With bd.Containers!Reports.Documents(e.Name)
For Each prp In .Properties
Debug.Print vbTab & prp.Name & " : " & prp.Value
Next prp
End With
Next e
End Sub

Ce code ne me renvoie pas les infos identiques à celle de la fenêtre pour
certaines rubriques comme le propriétaire ou les dates et de plus je ne
peux pas savoir si l'état est masqué ou non.

Enfin, je pensais pouvoir faire cela sans passer par DAO.

As tu une autre solution car dans ta 1ere procédure, je suis obligé de
charger mon état et les propriétés DateCreated, DateModified ne sont pas
gérées pour un état.
Dans la 2ème, sous A2K, je n'ai pas la possibilité d'ouvrir masqué un
état et je ne veux pas éditer toutes les propriétés de l'état.

Merci d'avance et surtout merci de m'avoir répondu.

A+
Eric



"?Lo»Paris?" écrivait
news:e#:

Bonjour Eric,

Non, tu ne peux par faire cela avec un For Each, comme tu le dit tu ne
dispose pas d'une collection "Properties" (qui est à 0)

Utilise simplement directement les propriétés :

If e.IsLoaded Then
.Print e.CurrentView '// Err si objet fermé
End If
Debug.Print e.DateCreated
Debug.Print e.DateModified
Debug.Print e.FullName
Debug.Print e.IsLoaded
Debug.Print e.Name
Debug.Print e.Type

Ce sont les même pour tout les objet Access (AccessObject), si
vraiment tu veux plus de détail utilise un objet Form ou Report :

Sub ProprieteEtat()
Dim a As AccessObject
Dim e As Access.Report, prp As Property
'On Error Resume Next

For Each a In CodeProject.AllReports
DoCmd.Echo False
DoCmd.OpenReport a.Name, acDesign, , , , acHidden
DoCmd.Echo True
For Each e In Application.Reports
Debug.Print e.Name
For Each prp In e.Properties
Debug.Print prp.Name, prp.Value
Next prp
DoCmd.Close acReport, a.Name
Next e
Next a
End Sub

Salutations



Avatar
?Lo»Paris?
Eric wrote:
Bonjour °Laurent°

Merci beaucoup pour ta réponse.

Mon problème est le suivant sous Access2000 :
Je voudrais lire les infos qui résident dans la boite des propriétés
des états quand on fait un clic droit sur les états qui figurent dans
l'onglet Etats de la fenêtre base de données. On y trouve :
le nom, le type, la description, créé le , modifié le, le
propriétaire et l'attribut masqué (Oui/Non).

Avec le code ci-dessous, j'arrive à lire certaines propriétés mais en
utilisant DAO.

Sub proprieteEtat2()
Dim bd As DAO.Database, prp As DAO.Property, e As AccessObject
Set bd = CurrentDb
For Each e In CurrentProject.AllReports
With bd.Containers!Reports.Documents(e.Name)
For Each prp In .Properties
Debug.Print vbTab & prp.Name & " : " & prp.Value
Next prp
End With
Next e
End Sub

Ce code ne me renvoie pas les infos identiques à celle de la fenêtre
pour certaines rubriques comme le propriétaire ou les dates et de
plus je ne peux pas savoir si l'état est masqué ou non.

Enfin, je pensais pouvoir faire cela sans passer par DAO.

As tu une autre solution car dans ta 1ere procédure, je suis obligé de
charger mon état et les propriétés DateCreated, DateModified ne sont
pas gérées pour un état.
Dans la 2ème, sous A2K, je n'ai pas la possibilité d'ouvrir masqué un
état et je ne veux pas éditer toutes les propriétés de l'état.

Merci d'avance et surtout merci de m'avoir répondu.

A+
Eric


Bonjour Eric,

Ce code ne me renvoie pas les infos identiques
C'est possible, j'en sais rien j'ai jamais vérifier.


plus je ne peux pas savoir si l'état est masqué ou non.
avec un AccessObject tu peux le savoir avec la propriétés "Attributes" si

elles est à 8 l'objet est masqué à 0 il ne l'es pas.

En fait c'est pareil pour les version Access 2k et +, certaines
informations ne sont pas disponible suivant le type d'objet, par exemple
"Description" n'est pas disponible avec un AccessObjet, elle est dispo avec
un objet DAO, Si tu veux savoir si l'objet est masqué tu doit utiliser un
objet AccessObjets tu ne peux le savoir avec un objet DAO.... bref c'est le
bordel, si tu veux TOUTES les infos sur un objet Access tu doit fait un
mixte en utilisant un Objet DAO ou un objet AccessObject.

J'espère que cela vas t'aidé.

Salutations

--
°Laurent°

Avatar
Eric
Bonjour °Laurent°

Merci bien pour toutes ces infos.
Je vais donc poursuivre avec un melting-pot DAO & AccessObject.
J'avais pas pensé à tester la propriété Attributes pour le cas où l'élément
est masqué (Attributs --> Attributes, ca aurait dû me sauter aux yeux).

A+
Eric


"?Lo»Paris?" écrivait


Bonjour Eric,

Ce code ne me renvoie pas les infos identiques
C'est possible, j'en sais rien j'ai jamais vérifier.


plus je ne peux pas savoir si l'état est masqué ou non.
avec un AccessObject tu peux le savoir avec la propriétés "Attributes"

si elles est à 8 l'objet est masqué à 0 il ne l'es pas.

En fait c'est pareil pour les version Access 2k et +, certaines
informations ne sont pas disponible suivant le type d'objet, par
exemple "Description" n'est pas disponible avec un AccessObjet, elle
est dispo avec un objet DAO, Si tu veux savoir si l'objet est masqué
tu doit utiliser un objet AccessObjets tu ne peux le savoir avec un
objet DAO.... bref c'est le bordel, si tu veux TOUTES les infos sur un
objet Access tu doit fait un mixte en utilisant un Objet DAO ou un
objet AccessObject.

J'espère que cela vas t'aidé.

Salutations