Bonjour,
Je développe une base stockée sur un serveur TSE.
Je souhaitais avoir une liste des utilisateurs connectés à ma base. Malheureusement tous les codes que j'ai trouvé sur le sujet font une lecture du fichier ldb.
Ce qui sur un serveur TSE renvoie "SERVEURTSE, admin" pour chaque connecté ! Dès lors pas évident de différencier les utilisateurs.
La petite astuce qui suit permet d'obtenir un résultat plus intéressant :
Il faut ajouter une table T_UserConnected avec les champs "DateConnexion" (Date), "User" (texte), "Time" (Date), Connected (Oui/Non)
Ensuite il suffit ajouter le code suivant sur les évenements Load et Unload du formulaire de menu. cela permet d'ajouter ou de supprimer des enregistrements dans la table en fonction des connexions ou des déconnexions des utilisateurs.
Ensuite il faut créer un formulaire (voir pièce jointe), contenant :
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 Private Sub Form_Load() 'suppresion des enregistrements concernant l'utilisateur (dernière déconnexion) DoCmd.SetWarnings False SQL = "DELETE T_UsersConnected.User, T_UsersConnected.Connected " _ & "FROM T_UsersConnected " _ & "WHERE (((T_UsersConnected.User)='" & Environ("UserName") & "') AND ((T_UsersConnected.Connected)=False));" DoCmd.RunSQL SQL 'Ajout d'un enregistrement contenant les informations de connexion SQL = "INSERT INTO T_UsersConnected VALUES ('" & (Date) & "','" & Environ("UserName") & "','" & (Time) & "', True);" DoCmd.RunSQL SQL DoCmd.SetWarnings True End Sub Private Sub Form_Unload() 'Suppression de l'enregistrement contenant les informations de connexion DoCmd.SetWarnings False SQL = "DELETE T_UsersConnected.User, T_UsersConnected.DateConnexion, T_UsersConnected.Connected " _ & "FROM T_UsersConnected " _ & "WHERE (((T_UsersConnected.User)='" & Environ("UserName") & "') AND ((T_UsersConnected.DateConnexion)=Date()) AND ((T_UsersConnected.Connected)=True));" DoCmd.RunSQL SQL 'Ajout de l'enregistrement contenant les informations de déconnexion DoCmd.SetWarnings False SQL = "INSERT INTO T_UsersConnected VALUES ('" & (Date) & "','" & Environ("UserName") & "','" & (Time) & "', False);" DoCmd.RunSQL SQL DoCmd.SetWarnings True Application.Quit End Sub
- un bouton bascule
- Deux zones de liste (dans l'exemple Lst_NbConnects et Lst_NbRecents)
- Deux labels (dans l'exemple Lbl_NbConnects et Lbl_NbRecents)
Voici le code associé a ce formulaire :
Voila! En espérants que ce code serve a quelques uns d'entres vous !
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 Option Compare Database Private Sub Bascule5_Click() If Me.Bascule5.Value = -1 Then Me.TimerInterval = 1000 Me.Bascule5.Caption = "Arrèter le scan" Me.Lst_Connectes.RowSource = "SELECT T_UsersConnected.User FROM T_UsersConnected WHERE (((T_UsersConnected.Connected)=-1));" Me.Lst_Recents.RowSource = "SELECT T_UsersConnected.User FROM T_UsersConnected;" Else Me.Bascule5.Caption = "Scan" Me.TimerInterval = 0 End If End Sub Private Sub Form_Open(Cancel As Integer) Me.Lst_Connectes.RowSource = "" Me.Lst_Recents.RowSource = "" End Sub Private Sub Form_Timer() Me.Lst_Connectes.Requery Me.Lst_Recents.Requery Me.Lbl_NbConnectes.Caption = "IL y a : " & Me.Lst_Connectes.ListCount & " personne(s)" Me.Lbl_Recents.Caption = "IL y a : " & Me.Lst_Recents.ListCount & " personne(s)" End Sub
A bientôt
Partager