So erhalten Sie den Benutzernamen der Person, die gerade die Datenbank verwendet, über VBA

Jetzt teilen:

Möchten Sie wissen, wer in Ihrem Unternehmen einen bestimmten Datensatz hinzugefügt oder zuletzt aktualisiert hat? Das ist ein häufiges Bedürfnis, für das Microsoft Access leider keine Standardfunktion bietet. Das Hinzufügen eines Felds „Zuletzt aktualisiert von“ zu Ihrer Tabelle kann (in vielen Fällen) ausreichen, um die meisten Anforderungen zu erfüllen. Aber wie finden Sie heraus, wer den Datensatz aktualisiert hat, wenn Access Ihnen diese Information nicht liefern kann? Mit etwas VBA-Code ist das alles möglich, wie Ihnen dieser Artikel zeigt.

Sie müssen kein eigenes Anmeldeformular erstellen, um den Benutzernamen zu erfassen

Frau Access-DatenbankSofern Ihre Datenbank nicht über ein eigenes Anmeldeformular oder einen eigenen Anmeldemechanismus verfügt, können Sie nur anhand einer der Windows-Betriebssystemdateien - insbesondere der Datei "mpr.dll" - feststellen, wer derzeit in der Datenbank verwendet / angemeldet ist. Datei. Wenn Sie zuvor noch keine externen DLLs in Ihrem Code verwendet haben, kann dies ein wenig entmutigend wirken, aber wie Sie im folgenden Code sehen werden, ist es eigentlich ziemlich einfach.

Also - definieren wir, was unser Code tun soll ...

"Lassen Sie mich den Namen des aktuell angemeldeten Benutzers haben"

Erstens der Code:

Declare Function GetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal Name As String, ByVal UserName As String, Length As Long) As Long

Public Function GetUserName() As String
    Dim returnStatus As Integer
    Dim Name, UserName As String
    'Allocate space for user name to be stored in
    UserName = Space(255)

    ' Call the aliased function in the mpr.dll file.
    returnStatus = GetUser(Name, UserName, 255)
    
    If returnStatus = 0 Then
        'Strip the username from the returned string
        UserName = Left(UserName, InStr(UserName, Chr(0)) - 1)
    Else
        ' An error occurred.
        GetUserName = "Error retrieving the user name."
        End
    End If

    GetUserName = UserName

End Function

Der Code erklärt

Der aktuell angemeldete Benutzer

Das erste, was Sie sehen werden, ist, dass wir auf eine externe Funktion verweisen, die in der Datei mpr.dll enthalten ist. Dazu deklarieren wir einen lokalen Namen (GetUser) für die in der DLL enthaltene öffentliche Funktion (in diesem Fall WNetGetUserA). - Wir definieren auch, welche Parameter für den Funktionsaufruf erforderlich sind - in diesem Fall die Parameter „Name“, „Benutzername“ und „Länge“. Das einzige, was uns hier wirklich interessiert, ist "UserName", aber der Rest muss ebenfalls angegeben werden, da die Funktion auf diese Weise in der DLL eingerichtet wird.

Nachdem dies erledigt ist, erstellen wir unsere eigene Funktion, von der aus wir diese externe Funktion aufrufen. Der Code für unsere Funktion ist ziemlich minimal, aber lassen Sie uns die Schlüsselelemente durchgehen:

  1.  „UserName = Space(255)“ – Wenn Sie den Code im Debugger schrittweise durchgehen, sehen Sie, dass die Variable „UserName“, die wir der Funktion „GetUser()“ übergeben, beim Aufruf überschrieben wird. Dafür benötigt die Variable ausreichend Speicherplatz. Wir reservieren daher 255 Leerzeichen, da dies für die meisten (wenn nicht alle) Benutzernamen mehr als ausreichend sein sollte.
  2. Wir erfassen den Rückgabewert aus dem Funktionsaufruf in der Variablen "returnStatus". Eine Null (0) bedeutet hier, dass der Anruf erfolgreich war, alles andere bedeutet, dass ein Fehler aufgetreten ist.
  3.  Schließlich muss die Variable "UserName" aufgeräumt werden, da sie im Wesentlichen mit Nullzeichen aufgefüllt wird, sodass wir die Zeichen in der Variablen extrahieren, bevor ein Chr (0) gefunden wird.

Sehen Sie - jetzt war das nicht so schlimm, oder? Und jetzt zumindest, wenn Sie sich darum kümmern müssen Beschädigung der MDB-DatenbankSie werden wissen, wer die Datenbank zuletzt verwendet hat, damit Sie die Schuld geben können! (Ich scherze hier natürlich!)

Einführung des Autors:

Mitchell Pond ist ein Datenrettungsexperte in DataNumen, Inc., das weltweit führend bei Datenwiederherstellungstechnologien ist, einschließlich Reparatur- SQL Server Problem und Excel-Wiederherstellungssoftwareprodukte. Für weitere Informationen besuchen Sie www.datanumen.com €XNUMX

Jetzt teilen:

Kommentare sind geschlossen.