|
Access - Liste aller angemeldeten Anwender
Liste aller angemeldeten Anwender In Access hat man die Möglichkeit, mit wenig Aufwand alle angemeldeten Anwender einer Datenbank sowie die entsprechenden Rechnernamen zu ermitteln.
Public Sub ListLoggedInUsers()
On Error GoTo PROC_ERR
Dim cnnAktuelleConn As Connection
Dim rstErgebnisSchema As New Recordset
Set cnnAktuelleConn = CurrentProject.Connection
Set rstErgebnisSchema = cnnAktuelleConn.OpenSchema( _
adSchemaProviderSpecific, , "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
Debug.Print
While Not rstErgebnisSchema.EOF
Debug.Print "Rechner: " & _
rstErgebnisSchema.Fields(0).Value
Debug.Print "User: " & _
rstErgebnisSchema.Fields(1).Value
Debug.Print String$(50, "-")
rstErgebnisSchema.MoveNext
Wend
PROC_EXIT:
Exit Sub
PROC_ERR:
MsgBox Err.Description
Resume PROC_EXIT
End Sub
Die Namen der angemeldeten User sind in einem sogenannten "Schema" gespeichert, das man anhand einer "Schema-ID" vom OLE DB-Provider abrufen kann. Das Ergebnis wird dann in Form eines Recordsets zurueckgeliefert. Um diese Daten in einer Access-Datenbank abzurufen, reicht eine kleine VBA-Routine, die die Namen wie in unserem Beispiel im Direktfenster ausgibt. Man kann die Inhalte des Recordsets auch intern verarbeiten. Der Abruf von Schemata erfolgt über die "OpenSchema"-Methode des Connection-Objektes. Dazu weist man einer Objektvariablen die aktuelle Verbindung der Datenbank zu. "cnnAktuelleConn.OpenSchema" liefert dann ueber die Schema-ID "{947BB102-5D43-11D1-BDBF-00C04FB92675}" ein Recordset als Ergebnis (Schema-IDs sind in der Dokumentation des jeweiligen OLE DB-Providers aufgelistet). Das Recordset gibt im ersten Feld über den Rechnernamen und im zweiten Feld über den Usernamen Auskunft. Diese Informationen schreibt man pro User durch eine Linie getrennt in das Direktfenster. Sobald man das Modul in einer Datenbank erstellt hat, steht die neue Funktion zur Verfügung. Bei Bedarf öffnet man mit Strg+G das Direktfenster, gibt "? ListLoggedInUsers" ein und kann sofort sehen, welche User momentan mit der betreffenden Datenbank arbeiten. |