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.