Bonjour,
J'aimerais afficher dans un msgbox la liste des noms des users
connectés à mon application Access 2000.
Quels sont les instructions VBA qui permettent de
rechercher le nom de tous ces users ?
Merci d'avance pour vos réponses.
Cordialement,
Patrick EVEN
Bonjour,
J'aimerais afficher dans un msgbox la liste des noms des users
connectés à mon application Access 2000.
Quels sont les instructions VBA qui permettent de
rechercher le nom de tous ces users ?
Merci d'avance pour vos réponses.
Cordialement,
Patrick EVEN
Bonjour,
J'aimerais afficher dans un msgbox la liste des noms des users
connectés à mon application Access 2000.
Quels sont les instructions VBA qui permettent de
rechercher le nom de tous ces users ?
Merci d'avance pour vos réponses.
Cordialement,
Patrick EVEN
Bonjour,
Ta base est-elle fractionnée en front-end back-end ?
La solution dépend de ta réponse car si c'est le cas il faut lire le
contenu du fichier de
verrouillage
de la back-end (qui contient les tables)
Si c'est le cas alors :
Dim BE as string
BE = DLookup("Database", "MSysObjects",
"[ForeignName]='UneTableAttachee'")
msgbox whoson(BE)
Sinon
msgbox whoson(currentdb.name)
et la fonction
Private Type UserRec
bMach(1 To 32) As Byte ' 1st 32 bytes hold machine name
bUser(1 To 32) As Byte ' 2nd 32 bytes hold user name
End Type
Public Function WhosOn(ByVal varPath As String) As String
On Error GoTo Err_WhosOn
Dim iLDBFile As Integer, iStart As Integer
Dim iLOF As Integer, i As Integer
Dim sPath As String, x As String
Dim sLogStr As String, sLogins As String
Dim sMach As String
Dim rUser As UserRec ' Defined in General
Dim dbCurrent As Database
Set dbCurrent = DBEngine.Workspaces(0).Databases(0)
dbCurrent.Close
sPath = Left(varPath, Len(varPath) - 3) + "LDB"
x = Dir(sPath)
iStart = 1
iLDBFile = FreeFile
Open sPath For Binary Access Read Shared As iLDBFile
iLOF = LOF(iLDBFile)
Do While Not EOF(iLDBFile)
Get iLDBFile, , rUser
With rUser
i = 1
sMach = ""
While .bMach(i) <> 0
sMach = sMach & Chr(.bMach(i))
i = i + 1
Wend
End With
sLogStr = sMach
If InStr(sLogins, sLogStr) = 0 Then
sLogins = sLogins & sLogStr & ";"
End If
iStart = iStart + 64
Loop
Close iLDBFile
WhosOn = sLogins
Exit_WhosOn:
Set dbCurrent = Nothing
Exit Function
Err_WhosOn:
If Err = 68 Then
MsgBox "Couldn't populate the list", 48, "No LDB File"
Else
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
Close iLDBFile
End If
Resume Exit_WhosOn
End Function
--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
--------------------------------------------------
Patrick Even a élucidé :
| Bonjour,
|
| J'aimerais afficher dans un msgbox la liste des noms des users
| connectés à mon application Access 2000.
|
| Quels sont les instructions VBA qui permettent de
| rechercher le nom de tous ces users ?
|
| Merci d'avance pour vos réponses.
| Cordialement,
| Patrick EVEN
Bonjour,
Ta base est-elle fractionnée en front-end back-end ?
La solution dépend de ta réponse car si c'est le cas il faut lire le
contenu du fichier de
verrouillage
de la back-end (qui contient les tables)
Si c'est le cas alors :
Dim BE as string
BE = DLookup("Database", "MSysObjects",
"[ForeignName]='UneTableAttachee'")
msgbox whoson(BE)
Sinon
msgbox whoson(currentdb.name)
et la fonction
Private Type UserRec
bMach(1 To 32) As Byte ' 1st 32 bytes hold machine name
bUser(1 To 32) As Byte ' 2nd 32 bytes hold user name
End Type
Public Function WhosOn(ByVal varPath As String) As String
On Error GoTo Err_WhosOn
Dim iLDBFile As Integer, iStart As Integer
Dim iLOF As Integer, i As Integer
Dim sPath As String, x As String
Dim sLogStr As String, sLogins As String
Dim sMach As String
Dim rUser As UserRec ' Defined in General
Dim dbCurrent As Database
Set dbCurrent = DBEngine.Workspaces(0).Databases(0)
dbCurrent.Close
sPath = Left(varPath, Len(varPath) - 3) + "LDB"
x = Dir(sPath)
iStart = 1
iLDBFile = FreeFile
Open sPath For Binary Access Read Shared As iLDBFile
iLOF = LOF(iLDBFile)
Do While Not EOF(iLDBFile)
Get iLDBFile, , rUser
With rUser
i = 1
sMach = ""
While .bMach(i) <> 0
sMach = sMach & Chr(.bMach(i))
i = i + 1
Wend
End With
sLogStr = sMach
If InStr(sLogins, sLogStr) = 0 Then
sLogins = sLogins & sLogStr & ";"
End If
iStart = iStart + 64
Loop
Close iLDBFile
WhosOn = sLogins
Exit_WhosOn:
Set dbCurrent = Nothing
Exit Function
Err_WhosOn:
If Err = 68 Then
MsgBox "Couldn't populate the list", 48, "No LDB File"
Else
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
Close iLDBFile
End If
Resume Exit_WhosOn
End Function
--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
--------------------------------------------------
Patrick Even <peven@capgemini.fr> a élucidé :
| Bonjour,
|
| J'aimerais afficher dans un msgbox la liste des noms des users
| connectés à mon application Access 2000.
|
| Quels sont les instructions VBA qui permettent de
| rechercher le nom de tous ces users ?
|
| Merci d'avance pour vos réponses.
| Cordialement,
| Patrick EVEN
Bonjour,
Ta base est-elle fractionnée en front-end back-end ?
La solution dépend de ta réponse car si c'est le cas il faut lire le
contenu du fichier de
verrouillage
de la back-end (qui contient les tables)
Si c'est le cas alors :
Dim BE as string
BE = DLookup("Database", "MSysObjects",
"[ForeignName]='UneTableAttachee'")
msgbox whoson(BE)
Sinon
msgbox whoson(currentdb.name)
et la fonction
Private Type UserRec
bMach(1 To 32) As Byte ' 1st 32 bytes hold machine name
bUser(1 To 32) As Byte ' 2nd 32 bytes hold user name
End Type
Public Function WhosOn(ByVal varPath As String) As String
On Error GoTo Err_WhosOn
Dim iLDBFile As Integer, iStart As Integer
Dim iLOF As Integer, i As Integer
Dim sPath As String, x As String
Dim sLogStr As String, sLogins As String
Dim sMach As String
Dim rUser As UserRec ' Defined in General
Dim dbCurrent As Database
Set dbCurrent = DBEngine.Workspaces(0).Databases(0)
dbCurrent.Close
sPath = Left(varPath, Len(varPath) - 3) + "LDB"
x = Dir(sPath)
iStart = 1
iLDBFile = FreeFile
Open sPath For Binary Access Read Shared As iLDBFile
iLOF = LOF(iLDBFile)
Do While Not EOF(iLDBFile)
Get iLDBFile, , rUser
With rUser
i = 1
sMach = ""
While .bMach(i) <> 0
sMach = sMach & Chr(.bMach(i))
i = i + 1
Wend
End With
sLogStr = sMach
If InStr(sLogins, sLogStr) = 0 Then
sLogins = sLogins & sLogStr & ";"
End If
iStart = iStart + 64
Loop
Close iLDBFile
WhosOn = sLogins
Exit_WhosOn:
Set dbCurrent = Nothing
Exit Function
Err_WhosOn:
If Err = 68 Then
MsgBox "Couldn't populate the list", 48, "No LDB File"
Else
MsgBox "Error: " & Err.Number & vbCrLf & Err.Description
Close iLDBFile
End If
Resume Exit_WhosOn
End Function
--
à+
Arnaud
--------------------------------------------------
Conseils d'utilisation, sites recommandés :
http://users.skynet.be/mpfa/
Access Memorandum - http://memoaccess.free.fr
--------------------------------------------------
Patrick Even a élucidé :
| Bonjour,
|
| J'aimerais afficher dans un msgbox la liste des noms des users
| connectés à mon application Access 2000.
|
| Quels sont les instructions VBA qui permettent de
| rechercher le nom de tous ces users ?
|
| Merci d'avance pour vos réponses.
| Cordialement,
| Patrick EVEN