Cum să obțineți numele de utilizator al persoanei care utilizează în prezent baza de date prin VBA

Distribuie acum:

Trebuie să știi cine din compania ta a adăugat o anumită înregistrare? Sau cine a actualizat-o ultima dată? Este o cerință destul de comună, dar din păcate nu una pentru care Microsoft Access are funcționalități încorporate. Simpla adăugare a unui câmp „ultima actualizare de” în tabel poate fi (în multe cazuri) suficientă pentru a satisface majoritatea nevoilor, dar cum știi cine a actualizat înregistrarea dacă Access nu îți poate spune? Puțin cod VBA este tot ce ai nevoie, așa cum îți va arăta acest articol.

Nu este nevoie să vă creați propriul formular de „login” pentru a captura numele de utilizator

Baza de date Ms AccessCu excepția cazului în care baza ta de date are propriul formular sau mecanism de conectare, atunci singurul mod prin care vei putea ști cine folosește/conectat în prezent la baza de date este să folosești unul dintre fișierele sistemului de operare Windows – în special „mpr.dll” fişier. Dacă nu ați mai folosit fișiere dll externe în codul dvs., poate părea puțin descurajantă, dar după cum veți vedea în codul de mai jos, este de fapt destul de simplu.

Deci – haideți să definim ce vrem să facă codul nostru...

„Permiteți-mi să am numele utilizatorului conectat în prezent”

În primul rând, codul:

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

Codul, explicat

Utilizatorul conectat în prezent

Primul lucru pe care îl veți vedea este că facem o referire la o funcție externă, conținută în fișierul mpr.dll. Facem acest lucru declarând un nume local (GetUser) pentru funcția publică conținută în dll (în acest caz, WNetGetUserA). – definim, de asemenea, ce parametri sunt necesari pentru apelul funcției – în acest caz parametrii „Nume”, „Nume utilizator” și „Lungime”. Singurul care ne interesează cu adevărat aici este „UserName”, dar și restul trebuie să fie furnizat, deoarece așa este configurată funcția în dll.

Acum că a fost făcut, ne creăm propria noastră funcție, din care vom face un apel către această funcție externă. Codul pentru funcția noastră este destul de minim, dar să trecem prin elementele cheie:

  1.  „UserName = Space(255)” – dacă parcurgeți codul pas cu pas în depanator, veți observa că atunci când este apelată funcția „GetUser()”, variabila „UserName” pe care o transmitem este de fapt suprascrisă. Pentru ca acest lucru să se întâmple, variabila are nevoie de suficientă memorie alocată pentru stocarea datelor, așa că alocăm doar 255 de caractere spațiu variabilei, deoarece acest lucru ar trebui să fie mai mult decât suficient pentru a conține majoritatea (dacă nu toate) numele de utilizator.
  2. Capturăm valoarea returnată din apelul funcției în variabila „returnStatus”. Un zero (0) aici înseamnă că apelul a avut succes, orice altceva înseamnă că a apărut o eroare.
  3.  În cele din urmă, variabila „UserName” trebuie aranjată, deoarece va fi în esență umplută cu caractere nule, așa că extragem caracterele care sunt în variabilă înainte de a fi găsită un Chr(0).

Vezi – acum nu a fost chiar așa de rău! Și acum, măcar dacă ai de-a face cu coruperea bazei de date mdb, veți ști cine a folosit ultima dată baza de date, astfel încât pe cine puteți da vina! (Glumesc aici desigur!)

Introducerea autorului:

Mitchell Pond este un expert în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv repara SQL Server problemă și produse software de recuperare Excel. Pentru mai multe informații vizitați www.datanumen.com

Distribuie acum:

Comentariile sunt închise.