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 :

Fichier log pour suivre les actions d'un utilisateur


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut Fichier log pour suivre les actions d'un utilisateur
    Bonjour à tous,

    J'arrive bientot a la fin de mon projet access , et j'aimerai ajouter une fonction qui crée un fichier log au format txt (ou autre, peu importe tant qu'il peut être ouvert facilement sur n'importe quelle machine).

    Dans ce fichier il y aurait :
    - Date et heure d'ouverture du fichier mdb
    - Utilisateur qui a ouvert le fichier (=nom de la session windows)
    - Action que l'utilisateur a effectué

    Ca ressemblerait à ça :

    31/07/07 12:10:05 Toto Ouverture formulaire A
    31/07/07 12:10:08 Toto Clic sur bouton B
    31/07/07 12:10:15 Toto Fermeture formulaire A


    Pouvez-vous m'orienter vers un tuto et surtout me dire si ce genre de manip est simple à réaliser ou pas.

    Merci pour votre aide.

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

    De mémoire il n'y a pas de tuto.

    Je ne sais pas si tu te rends compte de la compléxité, ce n'est pas l'écriture du fichier texte. Mais pour chaque action tu devras savoir ce qui c'est passé, c'est à dire que pour chaque événement sur le clik d'un bouton, une saisie, une fermeture de formulaire etc.. il va falloir que tu mettes une routine qui récupére le nom du contrôle, etc..

    Ce que je vois

    1 - Création d'une table
    2 - Création d'une routine qui a en paramétre le nom du contrôle ou il y'a eut une action, enregistrement des données dans la table
    3 - Cette routine devra être appelé sur chaque évènement qui sera de ta base.
    4 - Avant la fermeture de la base création du fichier Texte.

    Ce ne serait pas un peu de l'espionnage quand même.

    Starec

  3. #3
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut
    Merci pour ta réponse

    Citation Envoyé par Starec
    Ce ne serait pas un peu de l'espionnage quand même.
    Oui c'est vrai mais il y a tellement d'opérations importantes que s'il y a erreur il faut savoir de qui ça vient.

    Je pense que je vais simplifier le probleme : il faudrait pour chaque utilisateur récupérer qqch si il a modifié une table du projet (add, update ou delete)

    Donc un truc du genre

    31/07/07 12:10:05 Toto Ajout dans table A
    31/07/07 12:10:08 Toto Modif de table W
    31/07/07 12:10:15 Toto Suppression dans table F

    etc

    Je pense que ça doit être plus simple à mettre en place...en suivant ta procedure Starec

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

    Pas plus simple, car de mémoire on ne peut récupérer d'évènement sur une table, il faudrait que tu lances une routine à chaque déclenchement de requête, encore pire.

    Je me trompe peut-être, attends pour voir si quelqu'un de plus expérimenté à une solution pour toi.

    Peut-être que ce tuto peut t'aider, mais je n'en suis pas sûr.


    Starec

  5. #5
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut
    OK, merci pour le lien mais je l'avais deja vu, et il ne répond pas vraiment à mes attentes.

    Euh sinon, peut-être que c'est une question idiote mais qu'appelles tu "routine" ?

    Je me disais d'écrire une fonction qui teste si la requete est INSERT, UPDATE ou DELETE et qui écrit dans la table cette information (+ nom utilisateur).

  6. #6
    Membre habitué Avatar de Maxi-môme
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Avril 2006
    Messages : 144
    Points : 144
    Points
    144
    Par défaut
    Je vais utiliser la variable d'environnement username pour le login courant, et dans mon code vba, je vais inserer une ligne dans ma table a chaque operation (add, delete, update) de l'utilisateur. Ca va etre un peu long mais j'aurai le résultat voulu.

  7. #7
    Membre émérite
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 756
    Points : 2 987
    Points
    2 987
    Par défaut
    Je pense que tu es sur la bonne voie : au lieu de lancer des instructions SQL par-ci par-là, crée une fonction générique que tu appeleras avec ton instruction en paramètre.

    Un exemple (non testé)

    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
     
    Public Function RunMySQL(ByVal sSQL As String) As Boolean
     
    Dim bReturn As Boolean
     
       On Error Resume Next
       DoCMD.RunSQL sSQL, 0
       bReturn = (Err.Number = 0)
       On Error Goto 0
     
       If bReturn Then
          DoCmd.RunSQL "Insert Into UserTracking ......"
       Else 
          Msgbox "The instruction " & sSQL & " has failed"
       End If
     
       RunMySQL = bReturn
     
    End Function
    Christophe (cavo789)
    Mon blog, on y parle Docker, PHP, WSL, Markdown et plein d'autres choses : https://www.avonture.be

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Créer des fichiers log pour les pages web visitées hors ligne
    Par AprilD dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 23/03/2008, 22h01
  2. Fichier Adm pour configurer les exceptions du proxy dans IE7
    Par jdelges dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 15/05/2007, 10h00
  3. Lire un fichier Excel pour modifier les valeurs des cellules
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/10/2006, 15h13
  4. [Oracle 8i/Fichier de log] - fichier log pour analyse erreur
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 4
    Dernier message: 25/01/2005, 19h06
  5. Réponses: 6
    Dernier message: 06/10/2004, 10h41

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