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

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Access: créer un journal des sessions d'utilisateurs d'une base Access
Un tutoriel de Denis Hulo

Le , par User

57PARTAGES

16  0 
Bonjour à tous,

Je vous présente un nouveau tutoriel en complément du précédent (créer un journal d'activité des utilisateurs) :

Créer un journal des sessions utilisateurs

Je souhaite dans celui-ci expliquer comment enregistrer les sessions ou périodes d'activité des utilisateurs pour ensuite estimer le total des heures effectuées par mois par l'employé,
ou encore pour savoir qui est connecté à un moment donné.

« En informatique et en télécommunication, une session est une période délimitée pendant laquelle un appareil informatique est en communication et réalise des opérations au service d’un client - un usager, un logiciel ou un autre appareil. »

Dans un précédent article, j’ai essayé d’expliquer comment créer un journal d'activité des utilisateurs.
L’objectif est maintenant d’apprendre à créer un journal des sessions utilisateurs, dans lequel on enregistre uniquement la période d’activité de l’utilisateur de la base.
Bonne lecture

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de Pierre Fauconnier
Responsable Office & Excel https://www.developpez.com
Le 28/07/2020 à 9:29
Merci Denis pour ce nouveau tuto
2  0 
Avatar de nico84
Expert confirmé https://www.developpez.com
Le 22/07/2020 à 19:31
Bonjour,

J'ai déjà ça (sur des bases similaires), malheureusement beaucoup d'utilisateurs ne se déconnectent pas en partant
Une idée pour savoir qui travaille vraiment ?

En attendant mieux je force la déconnexion le soir grâce à une routine dans la fenêtre cachée :
Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Form_Timer() 'fermeture automatique à 23h01
If Not Mode_debug Then On Error GoTo err
100 If Not Mode_admin Then
110   If TimeValue(Now()) >= TimeValue("23:00:00") Then
        'comme tout le monde va se faire virer je l'écris une fois pour toutes
111     cnx.Execute "UPDATE parametres set users=0 WHERE ligne=1", dbFailOnError 
112     cnx.Execute "UPDATE personnel set nb_log=0 where nb_log>0", dbFailOnError 
        'procédure de fermeture habituelle avec écriture dans le journal
113     Call Form_menu.quitte_Click 
114   ElseIf TimeValue(Now()) >= TimeValue("22:55:00") Then
116     DoCmd.OpenForm "choix", , , , , , "FERMETURE AUTOMATIQUE DANS 5'"
    End If: End If
    Exit Sub
err: Call message("Erreur " & err.Number & "/" & Erl & " dans ac_log.timer : " & err.description)
End Sub
1  0 
Avatar de User
Rédacteur/Modérateur https://www.developpez.com
Le 22/07/2020 à 19:56
Bonjour Nico,

et merci pour ton commentaire.

Comme je le mentionne au début le journal des sessions va en complément du journal d'activité, mais entre la théorie et la pratique...

Pour répondre à ta question, j'imagine de mettre sur le timer du formulaire en arrière plan (F_Session) le code de la faq pour détecter l'inactivité de l'utilisateur et déclencher alors la fermeture de l'application :

https://access.developpez.com/faq/?page=Forms#inactifUti

Avec en cas d'inactivité un :

Code : Sélectionner tout
DoCmd.Quit()
Pour le moment je n'ai rien de mieux.

Cdlt,
1  0 
Avatar de User
Rédacteur/Modérateur https://www.developpez.com
Le 28/07/2020 à 12:08
Citation Envoyé par Pierre Fauconnier Voir le message
Merci Denis pour ce nouveau tuto
Pas de quoi

On croit toujours avoir épuisé tous les sujets, mais au bout du compte on trouve toujours une nouvelle idée à développer
1  0 
Avatar de Ric500
Membre éprouvé https://www.developpez.com
Le 29/07/2020 à 10:30
Bonjour à tous !

@User
Merci pour ce tuto que je vais me dépêcher de regarder avec soin !

@nico84
J'avais effectivement le même souci avec une application traçant l'activité des utilisateurs dont certains trouvaient malin de quitter l'appli par la croix.
J'ai pu y palier grâce au forum où j'ai trouvé ce module qui permet d'inactiver ou ré-activer cette croix à volonté:

Dans un module:
Code : Sélectionner tout
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
Option Compare Database

Private Declare Function GetSystemMenu Lib "user32" _
        (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
        (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const SC_CLOSE = &HF060&
Public Const MF_BYCOMMAND = &H0&

Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
 
Public Sub DesacFermeture()
    Dim hSysMenu As Long
     
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
    RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
 
End Sub


Public Sub ReactiveFermeture()
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, True)
    DrawMenuBar hSysMenu
End Sub
Si çà peut résoudre ton souci...
1  0 
Avatar de nico84
Expert confirmé https://www.developpez.com
Le 29/07/2020 à 10:35
Citation Envoyé par Ric500 Voir le message
J'ai pu y palier grâce au forum où j'ai trouvé ce module qui permet d'inactiver ou ré-activer cette croix à volonté:
Merci Ric j'ai déjà désactivé la croix, ce n'est pas suffisant car certains utilisateurs ont pour habitude de fermer avec un clic droit [fermer la fenêtre] sur l'icone dans la barre d'outils
Ceci dit la procédure form_close de ma fenêtre cachée les voit partir quand même

Le souci c'est ceux qui partent le soir sans arrêter l'application
1  0 
Avatar de User
Rédacteur/Modérateur https://www.developpez.com
Le 29/07/2020 à 11:16
Citation Envoyé par Ric500 Voir le message
Bonjour à tous !

@User
Merci pour ce tuto que je vais me dépêcher de regarder avec soin !

@nico84
J'avais effectivement le même souci avec une application traçant l'activité des utilisateurs dont certains trouvaient malin de quitter l'appli par la croix.
J'ai pu y palier grâce au forum où j'ai trouvé ce module qui permet d'inactiver ou ré-activer cette croix à volonté:

Dans un module:
Code : Sélectionner tout
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
Option Compare Database

Private Declare Function GetSystemMenu Lib "user32" _
        (ByVal hWnd As Long, ByVal bRevert As Long) As Long
Private Declare Function RemoveMenu Lib "user32" _
        (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
Public Const SC_CLOSE = &HF060&
Public Const MF_BYCOMMAND = &H0&

Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
 
Public Sub DesacFermeture()
    Dim hSysMenu As Long
     
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
    RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
 
End Sub


Public Sub ReactiveFermeture()
    Dim hSysMenu As Long
    hSysMenu = GetSystemMenu(Application.hWndAccessApp, True)
    DrawMenuBar hSysMenu
End Sub
Si çà peut résoudre ton souci...
Merci Ric pour cette idée intéressante

C'est en effet une possibilité, dans mon cas j'utilise un formulaire en arrière plan, ouvert durant toute la session avec une procédure sur fermeture, peut-être plus facile à mettre en place pour les débutants, à voir.

Cordialement,
1  0 
Avatar de Pierre Fauconnier
Responsable Office & Excel https://www.developpez.com
Le 29/07/2020 à 11:21
Citation Envoyé par User Voir le message
Dans mon cas j'utilise un formulaire en arrière plan, ouvert durant toute la session avec une procédure sur fermeture, peut-être plus facile à mettre en place pour les débutants, à voir.
+1. Ca évite les API
0  0