![]() |
||
![]() |
Aktuellen Anwender ermittelnEine 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. |
![]() |