IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

User

Contrôler l'activité des utilisateurs d'une base Access

Noter ce billet
par , 13/04/2020 à 22h55 (881 Affichages)
On souhaite contrôler l'activité des utilisateurs d'une base Access installée en réseau.

I. Introduction

La base de données est utilisée en mode multi-utilisateurs, avec sur le serveur le fichier de données et sur les postes clients l'interface utilisateurs :

Nom : reseau.jpg
Affichages : 1767
Taille : 7,3 Ko

On souhaite dans cette situation, enregistrer dans une table les événements déclenchés dans les formulaires Access par les utilisateurs :

  • mise à jour d'un enregistrement ;
  • création d'un enregistrement ;
  • suppression d'un enregistrement ;
  • ...


Pour cela, on met à jour la table en utilisant une procédure que l'on exécute sur les différents événements des formulaires :

  • après mise à jour ;
  • après insertion ;
  • sur suppression ;
  • ...


On décrit par la suite, les différentes étapes permettant de mettre en place ce système de contrôle.


II. Table T_Evenement

Elle contient les informations relatives aux événements déclenchés par les utilisateurs, et doit être présente dans le fichier de données côté serveur.

Nom du champ Type de données Description
IdEvenement Numero-auto Identifiant de l''événement
NomObjet Texte Nom de l'objet dans lequel l'événement à eu lieu (formulaire ou état)
TypeEvenement Texte Type d'événement : Après MAJ, Après insertion, etc..
DateEvenement Date/heure Date et heure de l'événement
IdEnregistrement Entier long Identifiant de l'enregistrement modifié, inséré ou supprimé
NomUtilisateur Texte Nom de l'utilisateur ayant déclenché l'événement

Le champ IDEnregistrement peut-être du type entier long ou du type texte.


III. Variable d'environnement

Pour enregistrer le nom de l'utilisateur ayant déclenché l'événement on a recours à la fonction Environ("UserName") :

Renvoie la valeur de type String associée à une variable d’environnement du système d’exploitation Windows.

Syntaxe
Environ ({ envstring | numéro })
Dans notre cas, si on exécute la commande suivante dans la fenêtre d'exécution :

Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
? Environ("UserName")
L'argument "UserName" passé à la fonction permet de renvoyer le nom de l'utilisateur actif.


IV. Procédure d'ajout de l'événement

Elle va copier dans la table des événements les informations relatives à l'événement déclenché :

  • La date et l'heure actuelles ;
  • Le nom de l'objet : formulaire, état.. ;
  • Le type d'événement déclenché ;
  • L'identifiant de l'enregistrement ;
  • Le nom de l'utilisateur actif.

La procédure ouvre un Recordset pour insérer dans la table, en plus de la date et du nom d'utilisateur, les données passées en arguments :

Code VBA : 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
Public Sub AjouterEvenement(ByVal NomObjet As String, ByVal TypeEvenement As String, ByVal IdEnregistrement As Long)
    Dim db As DAO.Database ' variable pour faire référence à la base courante
    Dim rs As DAO.Recordset ' variable pour faire référence au Recordset lié à la table T_Evenement
 
    Set db = CurrentDb ' Référence à la base courante
    Set rs = db.OpenRecordset("T_Evenement", dbOpenDynaset) 'Ouverture du Recordset lié à la table T_Evenement
 
    rs.AddNew ' ajout dans la table des informations relatives à l'événement
    rs!DateEvenement = Now() ' copie dans la table de la date et de l'heure actuelles
    rs!NomObjet = NomObjet ' copie du nom de l'objet : formulaire, état
    rs!TypeEvenement = TypeEvenement ' copie du type d'événement : modification, ajout, suppression d'un enrg.
    rs!IdEnregistrement = IdEnregistrement ' copie de l'identifiant de l'enregistrement
    rs!NomUtilisateur = Environ("username") ' copie du nom d'utilisateur
    rs.Update
 
    'libération des variables objet
    rs.Close
    Set rs = Nothing
 
    Set db = Nothing
 
End Sub
Elle doit être copiée dans un module standard.


V. Appels de la procédure dans un formulaire

Dans notre exemple, on choisit un formulaire tout simple pour gérer les clients :

Nom : F_Client.jpg
Affichages : 101
Taille : 64,7 Ko


Pour enregistrer l'activité des utilisateurs dans le formulaire, on a besoin de mettre sur les différents événements, des appels à cette procédure :

Nom : evenements_formulaire.jpg
Affichages : 93
Taille : 118,6 Ko


V-A. - Appel sur l'événement Après MAJ du formulaire

L’événement Après MAJ ou After Update se produit après que les données modifiées d’un enregistrement ont été mises à jour. On exécute alors la procédure permettant d'enregistrer dans la table les informations relatives à l'événement :

Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub Form_AfterUpdate()
    ' Ajout de l'événement Modification d'un enregistrement déclenché dans le formulaire F_Client
    AjouterEvenement "F_Client", "Modification enregistrement dans formulaire", Me.IdClient
End Sub


V-B. Appel sur l'événement Après insertion du formulaire

L’événement Après insertion se produit après l'ajout d'un nouvel enregistrement. On exécute alors la procédure d'ajout dans la table des informations concernant l'événement :

Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub Form_AfterInsert()
    ' Ajout de l'événement Insertion d'un enregistrement déclenché dans le formulaire F_Client
    AjouterEvenement "F_Client", "Insertion enregistrement dans formulaire", Me.IdClient
End Sub

V-C. Appel sur l'événement Sur suppression du formulaire

Quand l'utilisateur exécute une action pour supprimer un enregistrement, mais avant sa suppression effective, on enregistre alors dans la table les informations relatives à l'événement :

Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Private Sub Form_Delete(Cancel As Integer)
    ' Ajout de l'événement Suppression d'un enregistrement déclenché dans le formulaire F_Client
    AjouterEvenement "F_Client", "Suppression enregistrement dans formulaire", Me.IdClient
End Sub

VI. Affichage du journal des événements

On affiche le journal des événements par type d'événement, par objet, et par nom d'utilisateur :

Nom : Journal_Evenements.jpg
Affichages : 68
Taille : 262,2 Ko

Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog Viadeo Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog Twitter Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog Google Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog Facebook Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog Digg Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog Delicious Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog MySpace Envoyer le billet « Contrôler l'activité des utilisateurs d'une base Access » dans le blog Yahoo

Mis à jour 05/05/2020 à 10h22 par User

Catégories
Access , VBA

Commentaires

  1. Avatar de Pierre Fauconnier
    • |
    • permalink
    Salut

    Chouette billet qui en intéressera plus d'un.

    Merci Denis
  2. Avatar de User
    • |
    • permalink
    Salut Pierre

    Merci bien !

    Venant de toi, c'est plutôt rassurant