Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉCUPÉRER LA LISTE DES UTILISATEURS LOGGÉS SUR UNE BASE ACCESS


Information sur la source

Catégorie :Base de Donnees Niveau : Débutant Date de création : 28/04/2004 Vu : 2 904

Note :
5,5 / 10 - par 2 personnes
5,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note

Description

Cette procédure vous permet de récupérer, pour une base Access donnée (ici le fichier porte le même nom que l'EXE) l'ensemble des utilisateurs qui y sont connectés grâce à la lecture du fichier de verrous .LDB
 

Source

  • Public Function GetDBCurrentUsers(pDataBasePath as String, pUsersList As Control, Optional ByVal pClearListFirst As Boolean = False)
  • Dim rep As Long, LDBFile As String
  • Dim FileID As Long, Buffer As String * 300
  • Dim pos1 As Long, pos2 As Long
  • 'On Error GoTo GetDBCurrentUsersError
  • If pClearListFirst Then pUsersList.Clear
  • 'Chemin du fichier de verrous de la base
  • LDBFile = pDataBasePath & "\" & App.EXEName & ".LDB"
  • 'Envoi de l'erreur dans le fichier d'erreur de l'application
  • FileID = FreeFile
  • Open LDBFile For Binary Access Read As FileID
  • 'Lecture complète du fichier dans la structure
  • Get FileID, , Buffer
  • pos1 = 1
  • Do
  • pos2 = InStr(pos1 + 1, Buffer, Chr$(0))
  • If pos2 > 0 Then If InStr(Mid$(Buffer, pos1, pos2 - pos1), " ") = 0 And pos2 - pos1 > 1 Then pUsersList.AddItem Mid$(Buffer, pos1, pos2 - pos1)
  • pos1 = pos2 + 1
  • Loop While pos1 > 0 And pos2 > 0
  • Close FreeFile
  • GetDBCurrentUsersError:
  • Exit Function
  • End Function
Public Function GetDBCurrentUsers(pDataBasePath as String, pUsersList As Control, Optional ByVal pClearListFirst As Boolean = False)
    Dim rep As Long, LDBFile  As String
    Dim FileID As Long, Buffer As String * 300
    Dim pos1 As Long, pos2 As Long
    
    'On Error GoTo GetDBCurrentUsersError
    
    If pClearListFirst Then pUsersList.Clear
    
    'Chemin du fichier de verrous de la base
    LDBFile = pDataBasePath & "\" & App.EXEName & ".LDB"

    'Envoi de l'erreur dans le fichier d'erreur de l'application
    FileID = FreeFile
    
    Open LDBFile For Binary Access Read As FileID
    
    'Lecture complète du fichier dans la structure
    Get FileID, , Buffer
    pos1 = 1
    Do
        pos2 = InStr(pos1 + 1, Buffer, Chr$(0))
        If pos2 > 0 Then If InStr(Mid$(Buffer, pos1, pos2 - pos1), " ") = 0 And pos2 - pos1 > 1 Then pUsersList.AddItem Mid$(Buffer, pos1, pos2 - pos1)
        pos1 = pos2 + 1
    Loop While pos1 > 0 And pos2 > 0
    Close FreeFile

GetDBCurrentUsersError:
    Exit Function
End Function

Conclusion

Attention : certains utilisateurs peuvent être doublés s'ils ont ouvert implicitement plusieurs pages sur la base de données. Pour avoir une liste distincte, il faut mieux alors passer par un tableau avant de tout afficher dans la liste.
 

Commentaires et avis

signaler à un administrateur
Commentaire de jmlucienvb le 29/04/2004 12:48:28

Pour être franc, pour une annonce débutant, cette source mériterait un petit exemple...

signaler à un administrateur
Commentaire de juvamine le 08/05/2004 10:42:17

eueuh bah moi jai pas reussi a la faire marcher je l'ai modifier un chouilla...

Public Function GetDBCurrentUsers(pDataBasePath As String, pUsersList As Control, Optional ByVal pClearListFirst As Boolean = False)
    Dim rep As Long, LDBFile    As String
    Dim FileID As Long, Buffer As String * 300
    Dim pos1 As Long, pos2 As Long
    
    'On Error GoTo GetDBCurrentUsersError
    
    If pClearListFirst Then pUsersList.Clear
    
    'Chemin du fichier de verrous de la base
    Mid(pDataBasePath, Len(pDataBasePath) - 2, 3) = "ldb"
    'LDBFile = pDataBasePath & "\" & App.EXEName & ".LDB"
    LDBFile = pDataBasePath

    'Envoi de l'erreur dans le fichier d'erreur de l'application
    FileID = FreeFile
    
    Open LDBFile For Binary Access Read As FileID
    
    'Lecture complète du fichier dans la structure
    Get FileID, , Buffer
    pos1 = 1
    Do
        pos2 = InStr(pos1 + 1, Buffer, Chr$(0))
        If pos2 > 0 Then If InStr(Mid$(Buffer, pos1, pos2 - pos1), " ") = 0 And pos2 - pos1 > 1 Then pUsersList.AddItem Mid$(Buffer, pos1, pos2 - pos1)
        pos1 = pos2 + 1
    Loop While pos1 > 0 And pos2 > 0
    Close FreeFile

GetDBCurrentUsersError:
    Exit Function
End Function

Private Sub Command1_Click()
toto = GetDBCurrentUsers("d:\visual_basic\mydb.mdb", List1, True)
End Sub


voila, avec le petit exemple ds le command1_click

pitit probleme aussi..le ldb se met ds le meme repertoire ke le mdb...ya pa a aller chercher le app.path!!

donc en tout cas merci pour cette source qui me sera très utile pour une appli qui se connecte a une base unique depuis une vingtaine de postes !!

(un 6/10 quand meme)

@+
juva

signaler à un administrateur
Commentaire de simo_boukoutaya le 17/08/2004 12:11:37

bonjour g un probleme de recuperation de données en fait je fais une recherche dans la base grace a une clé composée de trois champs operation, typeproduit et le codeproduit ce troisième champs me crée des probleme car il est de type texte :
voici la requete
Rq = " SELECT  * FROM  produit , typeproduit_operation , operation WHERE  CODEPROD = " & var & " and produit.codeoper = " & Label3 & " and produit.codtyppr =  typeproduit_operation.codtyppr and produit.codtyppr = " & Label4 & "  and produit.codeoper = operation.codeoper and typeproduit_operation.codeoper = operation.codeoper "

ou var est une variable qui contient le codeproduit
quand je change le type de ce champs en numerique tout marche bien mais rien ne marche plus quand je reviens au type caractere
le message que le vb m'affiche c'est qu'il ya trop peu de parametre, 1 attendu
merci d'avance
c urgent

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.