Kodeeks - ListUsers
Denne funktion kan fortælle dig hvilke og hvormange brugere, som har en given database åben (Angiv en sti til databasen eller benyt den aktuelle database).
Public Function ListUsers(Optional DatabaseSti As String) As Byte
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim intUser As Integer
Dim fld As ADODB.Field
Dim Brugernavne As String
' Brugerliste-schema informationerne kræver denne magiske kode.
' Hvorfor der ikke er foruddefineret en konstant til dette, er et mysterium
Const adhcUsers = "{947bb102-5d43-11d1-bdbf-00c04fb92675}"
Set cnn = New ADODB.Connection
If DatabaseSti = "" Then
Set cnn = CurrentProject.Connection
Else
cnn.Provider = "Microsoft.Jet.OLEDB.4.0;Data Source=" & DatabaseSti & ";User ID=Admin;Password=;"
cnn.Open
End If
Set rst = cnn.OpenSchema(adSchemaProviderSpecific, , adhcUsers)
With rst
Do Until .EOF
intUser = intUser + 1
Brugernavne = Brugernavne & "Bruger # " & intUser & vbNewLine
For Each fld In .Fields
If fld.Name = "COMPUTER_NAME" Or fld.Name = "LOGIN_NAME" Then
Brugernavne = Brugernavne & " " & fld.Name & "=" & Trim(Replace(fld.Value, Chr(0), "")) & vbNewLine
End If
Next
.MoveNext
Loop
End With
ListUsers= intUser
rst.Close
Set rst = Nothing
cnn.Close
Set cnn = Nothing
If intUser = 1 Then
MsgBox "Der er ingen andre brugere på denne database!", vbExclamation, "Ingen brugere!"
Else
MsgBox Brugernavne, vbInformation, "Følgende " & intUser & " bruger(e) har databasen åben:"
End If
End Function
Vejledning:
Indsæt funktionen i et modul. Luk databasen og åbn den igen.
Ønsker du at få listet brugere, som er logget på den aktuelle database, kaldes blot
ListUsers
Ønsker du at få listet brugere på en ekstern database, kaldes funktionen således:
ListUsers "X:\Databaser\XDatabase.mdb"
eller
Antal = ListUsers("X:\Databaser\XDatabase.mdb" )
Hvis man benytter sig af muligheden for at få returneret antallet, kan det være en ide at fjerne de 5 sidste linier i funktionen (dem med MsgBox).