OVH Cloud OVH Cloud

Récupérer la date de modification d'un formulaire

9 réponses
Avatar
viny
Bonjour,

Je voudrais cr=E9er une sorte de libraire qui se met =E0 jour de mani=E8re
automatique. Je m'explique, j'ai plusieurs formulaires qui sont
identiques dans diff=E9rentes bases de donn=E9es access. Pour faciliter
la compr=E9hension, on va appeller ces bases de donn=E9es
"application1.mdb", "application2.mdb", ... Je voudrais mettre ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb", j'ouvre
un formulaire "update" qui va controler que la date de modification des
formulaires contenu dans "maLibrairie.mdb" est =E9gale =E0 la date du
m=EAme formulaire contenu dans "application1.mdb". Si ce n'est pas le
cas, effacer le formulaire dans "application1.mdb" et importer celui de
"maLibrairie.mdb".

Mon soucis c'est de r=E9cup=E9rer cette date de modification. J'ai bien
remarqu=E9 qu'Access stockait une date dans "MSysObjects" mais cette
date ne semble pas se mettre =E0 jour apr=E8s une modification.

J'ai aussi utilis=E9 le code suivant pour r=E9cup=E9rer la date mais m=EAme
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name =3D "Forms" Then Exit For
Next

Set docS =3D cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdated
Next

End Sub

Pourtant lorsque je clique droit (menu propri=E9t=E9) sur un formulaire
qui vient d'=EAtre modifi=E9 la date de modification est correct.
Quelqu'un sait-il comment r=E9cup=E9rer cette date?

9 réponses

Avatar
LiR
Je ne suis pas sûr mais j'ai l'impression que doc.DateCreated ne fonctionne
que pour les tables.

Tu peux utiliser ceci :

Public Function GetFormDateModif(ByVal FormName As String) As Date
GetFormDateModif = CurrentProject.AllForms(FormName).DateModified
End Function


Bonjour,

Je voudrais créer une sorte de libraire qui se met à jour de manière
automatique. Je m'explique, j'ai plusieurs formulaires qui sont
identiques dans différentes bases de données access. Pour faciliter
la compréhension, on va appeller ces bases de données
"application1.mdb", "application2.mdb", ... Je voudrais mettre ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb", j'ouvre
un formulaire "update" qui va controler que la date de modification des
formulaires contenu dans "maLibrairie.mdb" est égale à la date du
même formulaire contenu dans "application1.mdb". Si ce n'est pas le
cas, effacer le formulaire dans "application1.mdb" et importer celui de
"maLibrairie.mdb".

Mon soucis c'est de récupérer cette date de modification. J'ai bien
remarqué qu'Access stockait une date dans "MSysObjects" mais cette
date ne semble pas se mettre à jour après une modification.

J'ai aussi utilisé le code suivant pour récupérer la date mais même
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name = "Forms" Then Exit For
Next

Set docS = cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdated
Next

End Sub

Pourtant lorsque je clique droit (menu propriété) sur un formulaire
qui vient d'être modifié la date de modification est correct.
Quelqu'un sait-il comment récupérer cette date?




Avatar
viny
Bonjour,

Je ne sais pas sur quelle version d'access tu es. Moi j'ai la version
2000. Et la methode "DateModified" n'est pas membre de AllForms...

Je n'ai que:
Application
Count
Item
Parent

Donc ca marche pas évidement...., ca fonctionne chez toi?...



Je ne suis pas sûr mais j'ai l'impression que doc.DateCreated ne foncti onne
que pour les tables.

Tu peux utiliser ceci :

Public Function GetFormDateModif(ByVal FormName As String) As Date
GetFormDateModif = CurrentProject.AllForms(FormName).DateModified
End Function


Bonjour,

Je voudrais créer une sorte de libraire qui se met à jour de mani ère
automatique. Je m'explique, j'ai plusieurs formulaires qui sont
identiques dans différentes bases de données access. Pour faciliter
la compréhension, on va appeller ces bases de données
"application1.mdb", "application2.mdb", ... Je voudrais mettre ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb", j'ouvre
un formulaire "update" qui va controler que la date de modification des
formulaires contenu dans "maLibrairie.mdb" est égale à la date du
même formulaire contenu dans "application1.mdb". Si ce n'est pas le
cas, effacer le formulaire dans "application1.mdb" et importer celui de
"maLibrairie.mdb".

Mon soucis c'est de récupérer cette date de modification. J'ai bien
remarqué qu'Access stockait une date dans "MSysObjects" mais cette
date ne semble pas se mettre à jour après une modification.

J'ai aussi utilisé le code suivant pour récupérer la date mais m ême
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name = "Forms" Then Exit For
Next

Set docS = cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdated
Next

End Sub

Pourtant lorsque je clique droit (menu propriété) sur un formulaire
qui vient d'être modifié la date de modification est correct.
Quelqu'un sait-il comment récupérer cette date?






Avatar
LiR
Ce n'est pas une propriété de la classe AllForms, mais une propriété de la
classe AccesssObject. La méthode Item de la classe AllForms renvoie un objet
AccessObject qui représente un formulaire.

CurrentProject.AllForms(FormName).DateModified

Ou encore (explicitement) :

CurrentProject.AllForms.Item(FormName).DateModified




Bonjour,

Je ne sais pas sur quelle version d'access tu es. Moi j'ai la version
2000. Et la methode "DateModified" n'est pas membre de AllForms...

Je n'ai que:
Application
Count
Item
Parent

Donc ca marche pas évidement...., ca fonctionne chez toi?...



Je ne suis pas sûr mais j'ai l'impression que doc.DateCreated ne fonctionne
que pour les tables.

Tu peux utiliser ceci :

Public Function GetFormDateModif(ByVal FormName As String) As Date
GetFormDateModif = CurrentProject.AllForms(FormName).DateModified
End Function


Bonjour,

Je voudrais créer une sorte de libraire qui se met à jour de manière
automatique. Je m'explique, j'ai plusieurs formulaires qui sont
identiques dans différentes bases de données access. Pour faciliter
la compréhension, on va appeller ces bases de données
"application1.mdb", "application2.mdb", ... Je voudrais mettre ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb", j'ouvre
un formulaire "update" qui va controler que la date de modification des
formulaires contenu dans "maLibrairie.mdb" est égale à la date du
même formulaire contenu dans "application1.mdb". Si ce n'est pas le
cas, effacer le formulaire dans "application1.mdb" et importer celui de
"maLibrairie.mdb".

Mon soucis c'est de récupérer cette date de modification. J'ai bien
remarqué qu'Access stockait une date dans "MSysObjects" mais cette
date ne semble pas se mettre à jour après une modification.

J'ai aussi utilisé le code suivant pour récupérer la date mais même
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name = "Forms" Then Exit For
Next

Set docS = cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdated
Next

End Sub

Pourtant lorsque je clique droit (menu propriété) sur un formulaire
qui vient d'être modifié la date de modification est correct.
Quelqu'un sait-il comment récupérer cette date?










Avatar
viny
re,

quand j'exécute le code:
CurrentProject.AllForms(FormName).DateModified
ou
CurrentProject.AllForms.Item(FormName).DateModified

en remplaçant "FormName" par un nom d'un de mes formulaires... il me
répond:

Propriété ou méthode non gérée par cet objet...



Ce n'est pas une propriété de la classe AllForms, mais une propriét é de la
classe AccesssObject. La méthode Item de la classe AllForms renvoie un objet
AccessObject qui représente un formulaire.

CurrentProject.AllForms(FormName).DateModified

Ou encore (explicitement) :

CurrentProject.AllForms.Item(FormName).DateModified




Bonjour,

Je ne sais pas sur quelle version d'access tu es. Moi j'ai la version
2000. Et la methode "DateModified" n'est pas membre de AllForms...

Je n'ai que:
Application
Count
Item
Parent

Donc ca marche pas évidement...., ca fonctionne chez toi?...



Je ne suis pas sûr mais j'ai l'impression que doc.DateCreated ne fo nctionne
que pour les tables.

Tu peux utiliser ceci :

Public Function GetFormDateModif(ByVal FormName As String) As Date
GetFormDateModif = CurrentProject.AllForms(FormName).DateModifi ed
End Function


Bonjour,

Je voudrais créer une sorte de libraire qui se met à jour de ma nière
automatique. Je m'explique, j'ai plusieurs formulaires qui sont
identiques dans différentes bases de données access. Pour facil iter
la compréhension, on va appeller ces bases de données
"application1.mdb", "application2.mdb", ... Je voudrais mettre ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb", j'o uvre
un formulaire "update" qui va controler que la date de modification des
formulaires contenu dans "maLibrairie.mdb" est égale à la date du
même formulaire contenu dans "application1.mdb". Si ce n'est pas le
cas, effacer le formulaire dans "application1.mdb" et importer celu i de
"maLibrairie.mdb".

Mon soucis c'est de récupérer cette date de modification. J'ai bien
remarqué qu'Access stockait une date dans "MSysObjects" mais cette
date ne semble pas se mettre à jour après une modification.

J'ai aussi utilisé le code suivant pour récupérer la date mai s même
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name = "Forms" Then Exit For
Next

Set docS = cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdated
Next

End Sub

Pourtant lorsque je clique droit (menu propriété) sur un formul aire
qui vient d'être modifié la date de modification est correct.
Quelqu'un sait-il comment récupérer cette date?












Avatar
viny
Quoiqu'il en soit... je crois avoir trouvé une réponse dans la KB de
M$... qui m'enlève tout espoire de trouver une solution:

http://support.microsoft.com/kb/299554/en-us

dixit: "Unfortunately, Microsoft Access 2000 does not currently expose
this information in its object model; therefore, there is no
programmatic way to get to this information in Microsoft Access 2000."


Merci M$....


re,

quand j'exécute le code:
CurrentProject.AllForms(FormName).DateModified
ou
CurrentProject.AllForms.Item(FormName).DateModified

en remplaçant "FormName" par un nom d'un de mes formulaires... il me
répond:

Propriété ou méthode non gérée par cet objet...



Ce n'est pas une propriété de la classe AllForms, mais une propri été de la
classe AccesssObject. La méthode Item de la classe AllForms renvoie u n objet
AccessObject qui représente un formulaire.

CurrentProject.AllForms(FormName).DateModified

Ou encore (explicitement) :

CurrentProject.AllForms.Item(FormName).DateModified




Bonjour,

Je ne sais pas sur quelle version d'access tu es. Moi j'ai la version
2000. Et la methode "DateModified" n'est pas membre de AllForms...

Je n'ai que:
Application
Count
Item
Parent

Donc ca marche pas évidement...., ca fonctionne chez toi?...



Je ne suis pas sûr mais j'ai l'impression que doc.DateCreated ne fonctionne
que pour les tables.

Tu peux utiliser ceci :

Public Function GetFormDateModif(ByVal FormName As String) As Date
GetFormDateModif = CurrentProject.AllForms(FormName).DateModi fied
End Function


Bonjour,

Je voudrais créer une sorte de libraire qui se met à jour de manière
automatique. Je m'explique, j'ai plusieurs formulaires qui sont
identiques dans différentes bases de données access. Pour fac iliter
la compréhension, on va appeller ces bases de données
"application1.mdb", "application2.mdb", ... Je voudrais mettre ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb", j 'ouvre
un formulaire "update" qui va controler que la date de modificati on des
formulaires contenu dans "maLibrairie.mdb" est égale à la dat e du
même formulaire contenu dans "application1.mdb". Si ce n'est pa s le
cas, effacer le formulaire dans "application1.mdb" et importer ce lui de
"maLibrairie.mdb".

Mon soucis c'est de récupérer cette date de modification. J'a i bien
remarqué qu'Access stockait une date dans "MSysObjects" mais ce tte
date ne semble pas se mettre à jour après une modification.

J'ai aussi utilisé le code suivant pour récupérer la date m ais même
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name = "Forms" Then Exit For
Next

Set docS = cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdated
Next

End Sub

Pourtant lorsque je clique droit (menu propriété) sur un form ulaire
qui vient d'être modifié la date de modification est correct.
Quelqu'un sait-il comment récupérer cette date?














Avatar
LiR
Oui, c'est dommage en effet.

Cependant, tout n'est pas perdu, car Access fournit cette information,
puisqu'elle apparaît dans la fenêtre base de données (onglet Formulaires) en
affichage détail, dans les colonnes "Créé" et "Modifié".

Alors il est possible de dire à Access d'afficher les Formulaires, de
récupérer cette liste, ses éléments et le contenu de chaque colonne.

Il est dès lors possible de créer dans ta base maLibrairie.mdb une table
"MyAcObjInfos" par exemple, avec les champs Nom, DateCree, dateModif.

Table qui se trouvera également dans les bases copiée à metre à jour.

Puis après chaque mofidication ou importation, tu exécute une procédure qui
va chercher ces informations et les stocker dans la table.

Ainsi, dans application1, tu vas regarder dans la table la date de modif de
Formulaire1, par exemple, tu la lis également dans la base maLibrairie et tu
peux comparer les dates.

A savoir que ceci est faisable, cela requiert juste de gérer l'API Windows,
notamment les fonctions EnumChildWindows et GetClasssName pour trouver la
liste de la fenêtre base de données, puis de connaître le fonctionnement du
contrôle commun "SysListView32".

Je veux bien te donner le code si cela t'intéresse, par contre il est un peu
long et trop large pour le mettre ici (du fait que les lignes sur le forum
sont tronquées).
Si tu es interressé, dis-le moi, on trouvera un moyen pour que je te donne
ce code.


Quoiqu'il en soit... je crois avoir trouvé une réponse dans la KB de
M$... qui m'enlève tout espoire de trouver une solution:

http://support.microsoft.com/kb/299554/en-us

dixit: "Unfortunately, Microsoft Access 2000 does not currently expose
this information in its object model; therefore, there is no
programmatic way to get to this information in Microsoft Access 2000."


Merci M$....


re,

quand j'exécute le code:
CurrentProject.AllForms(FormName).DateModified
ou
CurrentProject.AllForms.Item(FormName).DateModified

en remplaçant "FormName" par un nom d'un de mes formulaires... il me
répond:

Propriété ou méthode non gérée par cet objet...



Ce n'est pas une propriété de la classe AllForms, mais une propriété de la
classe AccesssObject. La méthode Item de la classe AllForms renvoie un objet
AccessObject qui représente un formulaire.

CurrentProject.AllForms(FormName).DateModified

Ou encore (explicitement) :

CurrentProject.AllForms.Item(FormName).DateModified




Bonjour,

Je ne sais pas sur quelle version d'access tu es. Moi j'ai la version
2000. Et la methode "DateModified" n'est pas membre de AllForms...

Je n'ai que:
Application
Count
Item
Parent

Donc ca marche pas évidement...., ca fonctionne chez toi?...



Je ne suis pas sûr mais j'ai l'impression que doc.DateCreated ne fonctionne
que pour les tables.

Tu peux utiliser ceci :

Public Function GetFormDateModif(ByVal FormName As String) As Date
GetFormDateModif = CurrentProject.AllForms(FormName).DateModified
End Function


Bonjour,

Je voudrais créer une sorte de libraire qui se met à jour de manière
automatique. Je m'explique, j'ai plusieurs formulaires qui sont
identiques dans différentes bases de données access. Pour faciliter
la compréhension, on va appeller ces bases de données
"application1.mdb", "application2.mdb", ... Je voudrais mettre ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb", j'ouvre
un formulaire "update" qui va controler que la date de modification des
formulaires contenu dans "maLibrairie.mdb" est égale à la date du
même formulaire contenu dans "application1.mdb". Si ce n'est pas le
cas, effacer le formulaire dans "application1.mdb" et importer celui de
"maLibrairie.mdb".

Mon soucis c'est de récupérer cette date de modification. J'ai bien
remarqué qu'Access stockait une date dans "MSysObjects" mais cette
date ne semble pas se mettre à jour après une modification.

J'ai aussi utilisé le code suivant pour récupérer la date mais même
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name = "Forms" Then Exit For
Next

Set docS = cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdated
Next

End Sub

Pourtant lorsque je clique droit (menu propriété) sur un formulaire
qui vient d'être modifié la date de modification est correct.
Quelqu'un sait-il comment récupérer cette date?


















Avatar
viny
Waouwwwwwwwww! ;-)))

La semaine commence bien ... grâce à vous...

Oui bien sûr le code m'intéresse...

Un grand merci...!!! ;-)



Oui, c'est dommage en effet.

Cependant, tout n'est pas perdu, car Access fournit cette information,
puisqu'elle apparaît dans la fenêtre base de données (onglet Formul aires) en
affichage détail, dans les colonnes "Créé" et "Modifié".

Alors il est possible de dire à Access d'afficher les Formulaires, de
récupérer cette liste, ses éléments et le contenu de chaque colon ne.

Il est dès lors possible de créer dans ta base maLibrairie.mdb une ta ble
"MyAcObjInfos" par exemple, avec les champs Nom, DateCree, dateModif.

Table qui se trouvera également dans les bases copiée à metre à j our.

Puis après chaque mofidication ou importation, tu exécute une procé dure qui
va chercher ces informations et les stocker dans la table.

Ainsi, dans application1, tu vas regarder dans la table la date de modif de
Formulaire1, par exemple, tu la lis également dans la base maLibrairie et tu
peux comparer les dates.

A savoir que ceci est faisable, cela requiert juste de gérer l'API Wind ows,
notamment les fonctions EnumChildWindows et GetClasssName pour trouver la
liste de la fenêtre base de données, puis de connaître le fonctionn ement du
contrôle commun "SysListView32".

Je veux bien te donner le code si cela t'intéresse, par contre il est u n peu
long et trop large pour le mettre ici (du fait que les lignes sur le forum
sont tronquées).
Si tu es interressé, dis-le moi, on trouvera un moyen pour que je te do nne
ce code.


Quoiqu'il en soit... je crois avoir trouvé une réponse dans la KB de
M$... qui m'enlève tout espoire de trouver une solution:

http://support.microsoft.com/kb/299554/en-us

dixit: "Unfortunately, Microsoft Access 2000 does not currently expose
this information in its object model; therefore, there is no
programmatic way to get to this information in Microsoft Access 2000."


Merci M$....


re,

quand j'exécute le code:
CurrentProject.AllForms(FormName).DateModified
ou
CurrentProject.AllForms.Item(FormName).DateModified

en remplaçant "FormName" par un nom d'un de mes formulaires... il me
répond:

Propriété ou méthode non gérée par cet objet...



Ce n'est pas une propriété de la classe AllForms, mais une prop riété de la
classe AccesssObject. La méthode Item de la classe AllForms renvo ie un objet
AccessObject qui représente un formulaire.

CurrentProject.AllForms(FormName).DateModified

Ou encore (explicitement) :

CurrentProject.AllForms.Item(FormName).DateModified




Bonjour,

Je ne sais pas sur quelle version d'access tu es. Moi j'ai la ver sion
2000. Et la methode "DateModified" n'est pas membre de AllForms...

Je n'ai que:
Application
Count
Item
Parent

Donc ca marche pas évidement...., ca fonctionne chez toi?...



Je ne suis pas sûr mais j'ai l'impression que doc.DateCreated ne fonctionne
que pour les tables.

Tu peux utiliser ceci :

Public Function GetFormDateModif(ByVal FormName As String) As D ate
GetFormDateModif = CurrentProject.AllForms(FormName).Date Modified
End Function


Bonjour,

Je voudrais créer une sorte de libraire qui se met à jour de manière
automatique. Je m'explique, j'ai plusieurs formulaires qui so nt
identiques dans différentes bases de données access. Pour faciliter
la compréhension, on va appeller ces bases de données
"application1.mdb", "application2.mdb", ... Je voudrais mettr e ces
formulaires dans un mdb genre "maLibrairie.mdb".

Toujours selon mon exemple, au lancement de "application1.mdb ", j'ouvre
un formulaire "update" qui va controler que la date de modifi cation des
formulaires contenu dans "maLibrairie.mdb" est égale à la date du
même formulaire contenu dans "application1.mdb". Si ce n'es t pas le
cas, effacer le formulaire dans "application1.mdb" et importe r celui de
"maLibrairie.mdb".

Mon soucis c'est de récupérer cette date de modification. J'ai bien
remarqué qu'Access stockait une date dans "MSysObjects" mai s cette
date ne semble pas se mettre à jour après une modificatio n.

J'ai aussi utilisé le code suivant pour récupérer la da te mais même
constatation:

Public Sub tt()

Dim docS As Documents
Dim doc As Document
Dim contS As Containers
Dim cont As Container

For Each cont In CurrentDb.Containers
If cont.Name = "Forms" Then Exit For
Next

Set docS = cont.Documents

For Each doc In docS
MsgBox doc.Name & " " & doc.DateCreated & " " & doc.LastUpdat ed
Next

End Sub

Pourtant lorsque je clique droit (menu propriété) sur un formulaire
qui vient d'être modifié la date de modification est corr ect.
Quelqu'un sait-il comment récupérer cette date?




















Avatar
LiR
Bonjour,

Je t'ai envoyé le code par mail.
A noter : le code ne peut pas récupérer les informations des objets cachés
et système si l'option d'affichage d'Access n'est pas cochée pour ce type
d'objets.
C'est faisable si nécessaire, cependant...


Waouwwwwwwwww! ;-)))

La semaine commence bien ... grâce à vous...

Oui bien sûr le code m'intéresse...

Un grand merci...!!! ;-)


Avatar
viny
Ton code est tout simplement génial ;-))) (non non pas de fausses
modesties) ;-))) et correspond précisément à ce dont j'avais
besoin...

Trève de plaisanteries, encore une fois merci beaucoup pour ton
aide...



Bonjour,

Je t'ai envoyé le code par mail.
A noter : le code ne peut pas récupérer les informations des objets c achés
et système si l'option d'affichage d'Access n'est pas cochée pour ce type
d'objets.
C'est faisable si nécessaire, cependant...


Waouwwwwwwwww! ;-)))

La semaine commence bien ... grâce à vous...

Oui bien sûr le code m'intéresse...

Un grand merci...!!! ;-)