IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

[VB] Récupérer la dernière date de modif d'une base de données


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut [VB] Récupérer la dernière date de modif d'une base de données
    Bonjour,

    Avec une fonction : DateMaj, on obtient les date et heure de màj d'une table mais il faudrait que je fasse une boucle sur la BD pour l'appliquer à toutes les tables, récupérer toutes les dates et prendre la plus récente... facile à dire mais pas à faire. Auriez-vous une idée ?

    Merci

  2. #2
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Salut,

    je ne connais pas trop les fonctions de recuperation de date. Mon F1 sur DateMaj ne m'a rien donné.

    Ceci dit, si tu cherches a faire défiler toutes les tables, voici un petit code que j'utilise pour les exporter vers un autre fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim tb As TableDef
    For Each tb In CurrentDb.TableDefs
        If Not (tb.Name Like "MSys*") Then DoCmd.CopyObject LFilename, , acTable, tb.Name
    Next
    En comparant chaque date avec DateDiff, on doit pouvoir extraire sans souci la date la plus récente.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Je crois que tu m'as donné tous les outils nécessaires :p Maintenant je vais voir si ça se fait.

    Merci

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Voilà le résultat, j'ai créé une fonction mais il y a une erreur : Objet Requis au niveau de "Set RefDate"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Public Function LastUpdateTime() As Date
    On Error GoTo err
    Dim DB As DAO.Database
    Dim tb As DAO.TableDef
    Dim TbRef As DAO.TableDef
    Dim RefDate As Date
    Dim tbDate As Date
    Dim ResDate As Date
     
     
    Set DB = CurrentDb
    Set TbRef = DB.TableDefs("Projects")
    Set RefDate = TbRef.LastUpdated
     
    For Each tb In DB.TableDefs
            Set tbDate = tb.LastUpdated
           If DateDiff("s", RefDate, tbDate) >= 0 Then
                Set RefDate = RefDate
            Else
                Set RefDate = tbDate
    Next
     
    LastUpdatedTime = RefDate
     
    GoTo fin:
    err:
    MsgBox "Impossible d'accéder à la table"
    fin:
    Set DB = Nothing
    Set tb = Nothing
    End Function
    Ca marche jamais du premier coup :'(

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Sans oublier le "End If" qu n'y est pas...

  6. #6
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Le "Set" ne sert a rien pour une date:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RefDate = TbRef.LastUpdated

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Quel est le rapport entre le titre et le code ?

    D'un coté tu parles de date d'une base (titre) et de l'autre coté la date d'un table.

    Change le titre en conséquence, pour cela édit ton premier message.

    Merci

    Starec

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Salut Starec,

    Une base de données est constituée de tables donc en sortant la date de dernière modification la plus récente en effectuant une boucle sur les tables j'obtient la date de dernière modification de la base de données non ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Re

    Oui et non, cela dépend ce que tu appelles dernière modification.

    Si tu veux la date de modification en mode création : OUI
    Si tu veux la date où une entrée à été faite : NON, la date de modification n'est pas mise à jour à ce niveau. Fait un test et tu verras, quand tu rentres des données dans la table, la date n'est pas modifié.

    Si c'est le premier cas, il faut aussi testé sur les formulaires, etats, etc..

    Starec

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    Je voudrais retourner la date (et l'heure) à laquelle le dernier ajout d'enregistrement a eu lieu ou la dernière modification de valeur dans un champ déjà existant.

    ça correspond à quel cas ?

  11. #11
    Invité
    Invité(e)
    Par défaut
    Re

    Deux cas :

    1 - Mettre un champ dans ta table qui aura pour valeur par défaut Now(), qui te donnera la date et l'heure, en faisant une recherche sur le max de ce champ tu pourras récupérer la plus grande valeur

    2 - Regarder la date du fichier, pour cela regarde ce tuto.

    de plus fait une recherche sur le forum, ce sujet a été abordé il n'y a pas longtemps.

    Starec

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    J'ai regardé le tuto et si je regarde la date du fichier, elle change si je touche au code VBA, or je ne veux que les modifications de tables.

    Tu peux m'expliquer plus en détails la différence entre les 2 modifications (cas 1 et 2) s'il te plait ?

    Parce que pour moi que tu ajoute un enregistrement dans une table ou que tu modifies la valeur d'un champ d'un enregistrement existant c'est bien la date de modification de la table, et comme j'ai plusieurs tables il faut que je le fasse sur toutes les tables.

    Le code que j'ai mis il va changer de date si je fais quoi dans mes tables ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Re

    D'abord quand tu rajoutes un enregistrement dans une table tu ne changes pas la date de modification (la date de modification est quand tu changes quelques choses dans la structure de ta table)

    Je t'orienterais plutôt vers la 1 solution

    Tu crées dans ta table 2 champs, nommés : dte_Creation et dte_Modif, dans le premier champ tu mets comme valeur par défaut Now() (Maintenant ()), dans les propriétés du champ, et de même dans l'autre champ.

    Lorsque tu rajoutes un enregistrement, tu auras la date de création de celui-ci.

    Si tu modifie un enregistrement, il faut que dans le champs dte_Modif tu rentres la date et l'heure du moment.

    Ensuite pour avoir le dernier enregistrement, tu peux utiliser la fonction DMax sur ces champs (une fonction par champ)

    Si tu le veux pour toute tes tables il faut faire la même chose pour chaque.

    C'est pour cela que le code par rapport au titre m'intriguait, je me disais qu'il y avait quelque chose qui clochait.

    Starec

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    J'ai 13 tables ça veut dire qu'il faut que j'ajoute 26 champs (2 par table) ?

  15. #15
    Invité
    Invité(e)
    Par défaut
    Re

    Heu Oui

    Va jeter un coup d'oeil ici, c'est le même soucis.

    Starec

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 187
    Points : 56
    Points
    56
    Par défaut
    J'ai maté la discussion dont tu m'as filé le lien et je crois que je vais laissé tombé c'était juste "un plus" pour l'interface de recherche mais ce n'est pas vital pour l'utilisateur qui cherche un équipement dans cette saleté de base :p

    Désolé de vous avoir fait répondre à cela pour ensuite laisser tomber mais il me reste une semaine et 2 jours de stage et j'ai d'autre problèmes plus "vitaux" à résoudre.

    A + pour de nouveaux problèmes

    Merci de votre patience

  17. #17
    Membre confirmé Avatar de timoth
    Homme Profil pro
    Responsable Outils Digitaux
    Inscrit en
    Octobre 2005
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Responsable Outils Digitaux

    Informations forums :
    Inscription : Octobre 2005
    Messages : 479
    Points : 474
    Points
    474
    Par défaut
    Tu n'as pas perdu ton temps Starec, ce fut tres instructif pour moi !

  18. #18
    Invité
    Invité(e)
    Par défaut

Discussions similaires

  1. Dernière date de modification d'une fonction
    Par haykelFST dans le forum Développement
    Réponses: 1
    Dernier message: 26/11/2008, 20h57
  2. Rentrer la date du jour dans une base de données
    Par Guguslefun dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/06/2007, 14h05
  3. [VB.net 2003] Annuler les dernieres modifications d'une base de donnée
    Par winny107 dans le forum Accès aux données
    Réponses: 2
    Dernier message: 10/10/2006, 07h05
  4. Modification d'une base de donnée
    Par scorpion37 dans le forum C++Builder
    Réponses: 70
    Dernier message: 16/06/2006, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo