Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Contribuez
Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/07/2007, 09h46   #1
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Par défaut [Astuce]Liste des connectés sans lecture du fichier ldb

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.
Code :
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
Ensuite il faut créer un formulaire (voir pièce jointe), contenant :
- 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 :
Code :
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
Voila! En espérants que ce code serve a quelques uns d'entres vous !

A bientôt
Images attachées
Type de fichier : jpg F_Liste_des_connectés.JPG (14,4 Ko, 54 affichages)
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2007, 09h17   #2
Membre Expert
 
Inscription : avril 2006
Messages : 1 318
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 318
Points : 1 591
Points : 1 591
bonjour e040098k,

il existe aussi cette alternative mais il faut référencer <ADODB> :
http://support.microsoft.com/default...d=KB;FR;198755

Amicalement,

Philippe
philben est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 15h19   #3
Membre chevronné
 
Avatar de alassanediakite
 
Homme Alassane Diakité
Conseil - Consultant en systèmes d'information
Inscription : août 2006
Messages : 539
Détails du profil
Informations personnelles :
Nom : Homme Alassane Diakité
Âge : 34
Localisation : Mali

Informations professionnelles :
Activité : Conseil - Consultant en systèmes d'information

Informations forums :
Inscription : août 2006
Messages : 539
Points : 604
Points : 604
Envoyer un message via Yahoo à alassanediakite
Salut
Puis je savoir la signification de TSE?
Merci d'avance
alassanediakite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2007, 22h17   #4
Membre du Club
 
Avatar de e040098k
 
Inscription : avril 2007
Messages : 197
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 197
Points : 56
Points : 56
Salut,

un petit lien :
http://www.dsi13.fr/article_10214.htm
e040098k est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h58.


 
 
 
 
Partenaires

Hébergement Web