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

Access Discussion :

Historique d'une BdD


Sujet :

Access

  1. #1
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut Historique d'une BdD
    Bonjour à toutes et tous !
    Je cherche depuis quelques temps l'art et la manière de créer et enregistrer l'historique d"une BdD nommée. Pour moi qui n'a jamais fait d'études d'informatique ... c'est durdur !
    C'est à dire, j'aimerai enregistrer dans une table, toutes les modifications d'une table (modification de nom de champ par exemple, d'ajout ou de modification de contenu), d'un formulaire (modification physique de contrôles ou ajout/suppression/modification de données, modification dans le code afférent au formulaire, etc ...)
    Autrement dit, une boite noire comme dans les avions et bientôt dans nos voitures !
    Si quelqu'un a déjà créer ce type de boite noire, je suis intéressé par la méthode à suivre !

  2. #2
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Bonsoir,

    Un historique des modifications effectuées sur les données, ou journal d'activité des utilisateurs, ça on peut le faire grâce notamment aux événements de formulaires.
    Par contre enregistrer toutes les modifications apportées à la structure des objets de la base, là je ne connais pas d'exemple.

    Idéalement il faudrait sauvegarder et dater les différentes versions de la base, puis comparer tous les objets de 2 versions successives (tables, champs, formulaires, contrôles, etc..) pour identifier ceux qui ont été modifiés durant cette période, comme on dit c'est pas gagné

    Cdlt,

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonjour,

    Une façon simple d'avoir l'historique des modifications d'une BDD est de faire toutes ses modifications en VBA. Voici par exemple un extrait du code qui me permet de mettre à jour les différentes dorsales à chaque évolution de la frontale :
    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
    32
    33
    34
    Private Sub patch(Vf, Vd) 'Vf est la version de la frontale, Vd celle de la dorsale
     
    ...
    If Vd < "22.2" And Vf >= "22.2" Then '********************************************
      Call CreeChamp(odb, "modifications", False, "Dvalid", dbDate, 0, False, False, 0, "", "", "22.2 date validation dernier indice")
    End If
     
    If Vd < "22.2a" And Vf >= "22.2a" Then '********************************************
        Call CreeChamp(odb, "operations", False, "obsolete", dbBoolean, 0, False, False, False, "0", "", "22.2a phase devenue obsolete")
        Call CreeChamp(odb, "stock", False, "duree_vie", dbInteger, 0, False, False, True, "0", "", "22.2a duree de vie en jours du produit")
     
        Call CreeChamp(odb, "machine_d", True, "cd_md", dbLong, 0, True, True, False, "", "", "22.2a table des indisponibilités machine (clé auto)", "P")
        Call CreeChamp(odb, "machine_d", False, "abrev", dbText, 12, False, False, True, "", "", "ref abrégée de la machine", "C")
        Call CreeChamp(odb, "machine_d", False, "d_mac", dbDate, 0, False, True, False, "", "", "jour d'indisponibilité", "C")
    End If
     
    If Vd < "22.4" And Vf >= "22.4" Then '********************************************
      odb.Execute "UPDATE of_taches set qliv=0 where qliv is null", Nr
      Call CreeChamp(odb, "rma", False, "cd_cde", dbText, 10, False, False, True, "", "", "22.4 commande de retour ou remplacement / N° avoir client", "C")
    End If
     
    If Vd < "22.5" And Vf >= "22.5" Then '********************************************
      odb.TableDefs("RC").Fields("montant").ValidationRule = ""
      Call SupChamp(odb, "operations", "outillage")
      Call Agrandir(odb, "besoin", "draw_ref", 30, True)
      Call Agrandir(odb, "besoin", "cd_cde", 40, True)
      odb.Execute "UPDATE cdeVT SET prio=0 where devis<>0 and etat in ('D','P','S')", dbFailOnError
    End If
     
    ...
    msgbox "La BDD est passée à la version " & Vf
    CurrentDb.Execute "UPDATE parametres set version='" & Vf & "' WHERE ligne=1;", dbFailOnError  'met à jour dans la dorsale sa version pour éviter de réappliquer le patch
     
    end sub
    Les différentes procédures creechamp, supchamp, agrandir sont des procédures perso qui font ce que leur nom indique et sont compatibles SLQ server / access mais il est aussi possible de coder des instructions directement

    L'avantage de ce système est que la frontale se charge de mettre à niveau une et une seule fois toutes ses dorsales (très utile si l'application est utilisée par plusieurs clients)

    Pour les évolutions du logiciel (la frontale), je me contente de l'indiquer en commentaire dans le code VBA et pour ce qui est de l'IHM proprement dit je ne fais aucun suivi des évolutions mais là aussi tout pourrait se faire en VBA

    Les organisations professionnelles utilisent pour cela GitHub (ou un équivalent) qui a été pensé pour le travail collaboratif et permet de gérer qui modifie quoi et quelle est la "bonne" version mais c'est peu adapté à access je pense.

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 371
    Points : 19 774
    Points
    19 774
    Billets dans le blog
    65
    Par défaut
    Salut Nico,

    En effet ton approche est intéressante. Perso je pensais plutôt à des modifs manuelles de la structure des objets

    Cdlt

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 339
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 339
    Points : 1 955
    Points
    1 955
    Par défaut
    @nico84:
    Ne serait-il pas plus intéressant de passer par les triggers ?
    Histoire de ne pas "polluer" le code VBA ?

  6. #6
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Désolé je ne connais pas les triggers, ca existe en access ?

  7. #7
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 386
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 386
    Points : 20 475
    Points
    20 475
    Par défaut
    sauf preuve du contraire je ne pense pas que ça existe sous Access les triggers.
    Avec un SGBDR genre MySQl oui mais pas Access.

    Citation Envoyé par Jsiorat Voir le message
    C'est à dire, j'aimerai enregistrer dans une table, toutes les modifications d'une table (modification de nom de champ par exemple, d'ajout ou de modification de contenu), d'un formulaire (modification physique de contrôles ou ajout/suppression/modification de données, modification dans le code afférent au formulaire, etc
    il faut apprendre à faire du code VBA et des requêtes SQL.
    A chaque fois que vous faites un INSERT INTO , UPDATE SET ou DELETE FROM ...vous pouvez tracer ces ordres dans une table à part.

    Vous pouvez même faire votre propre système de commit rollback
    Par exemple pour mettre à jour la table client avec un UPDATE table_client SET nom_client= 'Jean Dupont' where nom_client="Jean Dupond"
    Avant d'appeler un UPDATE vous pouvez récupérer les données de la ligne et les mettre dans une table temporaire tampon

  8. #8
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 770
    Points : 14 812
    Points
    14 812
    Par défaut
    bonjour,
    Citation Envoyé par Mat.M
    sauf preuve du contraire je ne pense pas que ça existe sous Access les triggers.
    oui, cela existe bien mais ça s'appelle macro de données

  9. #9
    Membre habitué
    Avatar de Jsiorat
    Homme Profil pro
    RETRAITE
    Inscrit en
    Juillet 2005
    Messages
    398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Ariège (Midi Pyrénées)

    Informations professionnelles :
    Activité : RETRAITE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 398
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    bonjour,

    oui, cela existe bien mais ça s'appelle macro de données
    Un grand merci à tous,
    je vais passer un certain temps (mais un temps certain !) a voir et étudier le problème des macros de données

Discussions similaires

  1. Historique des requêtes sur une bdd
    Par kevin254kl dans le forum Outils
    Réponses: 1
    Dernier message: 10/11/2020, 14h36
  2. Problème de gestion d'historique dans une BDD
    Par pledger dans le forum Oracle
    Réponses: 0
    Dernier message: 13/03/2012, 14h52
  3. [XML] extraction directe de données d'une BDD
    Par MicKCanE dans le forum XQUERY/SGBD
    Réponses: 7
    Dernier message: 04/09/2006, 13h01
  4. historique d'une disquette
    Par bashou dans le forum MFC
    Réponses: 2
    Dernier message: 24/06/2002, 11h35
  5. connection a une BDD MySql
    Par delire8 dans le forum MFC
    Réponses: 7
    Dernier message: 19/06/2002, 18h18

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