Aktuellen Anwender ermitteln

Eine unter Access 2000 entwickelte Datenbank steht in einer Mehrbenutzer-Umgebung mehreren Anwendern zur Verfügung. Nun möchten Sie ermitteln können, wer in diesem Moment auf die Datenbank zugreift.

Diese Anforderung können Sie mit einer VBA-Prozedur realisieren (CHIP-Code MEHRBEN). Die abgedruckte Prozedur »angemeldeteNutzer()« erfüllt diese Aufgabe, mit kleiner Unterstützung durch die Funktion »entferneNullChar()«. Sie erzeugt für jeden momentan angemeldeten Datenbank-Nutzer eine Dialogmeldung, die seinen Login und seinen Computernamen preisgibt.



Public Sub angemeldeteNutzer()

Dim connect As ADODB. connection
Dim rstSchema As ADODB. Recordset
Dim strConnect As String
Dim strLogin As String
Dim strComputer As String
Dim strAusgabe As String

On Error GoTo err_angemeldeteNutzer

strConnect = äProvider=- Microsoft.Jet.OLEDB.4.0;ô & _
äData Source=ô & CurrentDb.- Name
Set connect = New ADODB. connection
connect.Open strConnect
Set rstSchema = connect.-- OpenSchema(adSchemaProviderSpecific, SchemaID:=ô{947 bb102-5d43-11d1-bdbf -00c04fb92675}ô)
Do Until rstSchema.EOF
strLogin = entferneNullChar(rstSchema!LOGIN_NAME)
strComputer = entferneNullChar(rstSchema!COMPUTER_NAME)
strAusgabe = äBenutzer ä & strLogin & ä vom Computer ä & strComputer
MsgBox strAusgabe
rstSchema.MoveNext
Loop
rstSchema.Close
connect.Close

exit_angemeldeteNutzer:
Exit Sub

err_angemeldeteNutzer:
MsgBox Err.Description
Resume exit_angemeldeteNutzer
End Sub

Public Function entferneNullChar(Zeichenkette As String) As String

If InStr(Zeichenkette, vbNullChar) > 0 Then
Zeichenkette = Left(Zeichenkette, InStr(Zeichenkette,- vbNullChar) - 1)
End If

entferneNullChar = Zeichenkette
End Function



Die Prozedur »angemeldeteNutzer()« bedient sich zur Erfüllung ihrer Aufgabe eines »Connection«-Objekts und der Methode »OpenSchema«.
Zuerst erzeugen Sie das »Connection«-Objekt, das eine geöffnete Verbindung zu einer Datenquelle repräsentiert. Die abgedruckte Prozedur übergibt dabei die benötigten Parameter als String--Variable »strConnect«. Dies sind der Provider »Microsoft.Jet.OLEDB.4.0« und der Name der aktuellen Datenbank, den Sie mit »CurrentDb.Name« ermitteln. Die Parameter trennen Sie mit Semikolon.

Im nächsten Schritt nutzen Sie die Methode »OpenSchema« des »Connection«-Objektes, um Informationen über das Datenbankschema anzufordern. Die Methode gibt ein Objekt des Typs »Recordset« zurück, das die jeweiligen Informationen enthält. Der erste der beiden Parameter »adSchemaProviderSpecific« definiert den Typ der Abfrage; in diesem Fall handelt es sich um eine vom Provider angebotene, nicht standardisierte Ab-frage. Mit dem zweiten Parameter »SchemaID:=ô{947bb102-5d43-11d1-b-d-bf--00-c-04fb92675}ô« übergeben Sie die ID der Abfrage.

Der Rest ist schnell erläutert. In einer einfachen »Do Until«-Schleife lesen Sie alle Sätze des übergebenen Recordsets aus, wobei jeder Datensatz einem angemeldeten User entspricht. Im Feld »LOGIN_NAME« steht der Anmelde-name des Anwenders, während Sie im Feld »COMPUTER_NAME« den jeweiligen Computernamen finden. Unter anderem wird auch der immer gegenwärtige Anwender »Admin« des eigenen Systems aufgelistet. Diese Einträge enden allerdings jeweils mit einem Null-Character. Diesen müssen Sie mit Hilfe der abgedruckten Funktion »entferneNullChar()« nachträglich entfernen.