Hogyan szerezheti meg az adatbázist jelenleg használó személy felhasználónevét VBA-n keresztül

Oszd meg most:

Tudni szeretné, hogy vállalkozásában ki adott hozzá egy adott rekordot? Vagy ki frissítette utoljára? Ez egy elég gyakori követelmény, de sajnos a Microsoft Access nem rendelkezik beépített funkciókkal ehhez. A táblázathoz hozzáadott „utolsó frissítés:” mező (sok esetben) elegendő lehet a legtöbb igény kielégítésére, de honnan tudhatja, hogy ki frissítette a rekordot, ha az Access nem tudja megmondani? Egy kis VBA kódra van szüksége, ahogy ez a cikk is bemutatja.

Nincs szükség saját „bejelentkezési” űrlap létrehozására a felhasználónév rögzítéséhez

Ms Access adatbázisHacsak az adatbázisnak nincs saját bejelentkezési űrlapja vagy mechanizmusa, akkor az egyetlen módja annak, hogy megtudja, hogy jelenleg ki használja/jelentkezett be az adatbázisba, ha használja a Windows operációs rendszer egyik fájlját – különösen az „mpr.dll” fájlt. fájlt. Ha korábban nem használt külső dll-eket a kódjában, ez kissé ijesztőnek tűnhet, de ahogy az alábbi kódból is látható, ez valójában nagyon egyszerű.

Tehát – határozzuk meg, mit akarunk a kódunkkal…

„Kérem a jelenleg bejelentkezett felhasználó nevét”

Először is a kód:

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

A kód, elmagyarázva

A jelenleg bejelentkezett felhasználó

Az első dolog, amit látni fog, az az, hogy egy külső függvényre hivatkozunk, amely az mpr.dll fájlban található. Ezt úgy tehetjük meg, hogy deklarálunk egy helyi nevet (GetUser) a dll-ben található nyilvános funkcióhoz (jelen esetben WNetGetUserA). – azt is meghatározzuk, hogy milyen paraméterek szükségesek a függvényhíváshoz – ebben az esetben a „Név”, „Felhasználónév” és „Hossz” paraméterek. Az egyetlen, amelyre igazán kíváncsiak vagyunk, az a „Felhasználónév”, de a maradékot is meg kell adni, mivel így van beállítva a függvény a dll-ben.

Most, hogy ez megtörtént, létrehozzuk a saját függvényünket, amelyből meghívjuk ezt a külső függvényt. A függvényünk kódja meglehetősen minimális, de fussuk át a legfontosabb elemeket:

  1.  „UserName = Space(255)” – ha végigmegyünk a kódon a hibakeresőben, azt fogjuk látni, hogy a „GetUser()” függvény meghívásakor a neki átadott „UserName” változó felülírásra kerül. Ahhoz, hogy ez megtörténjen, a változónak elegendő memóriát kell lefoglalnia az adatok tárolásához, ezért csak 255 szóköz karaktert foglalunk le a változónak, mivel ennek több mint elégnek kell lennie a legtöbb (ha nem az összes) felhasználónév tárolásához.
  2. A függvényhívás visszatérési értékét a „returnStatus” változóban rögzítjük. A nulla (0) azt jelenti, hogy a hívás sikeres volt, minden más azt jelenti, hogy hiba történt.
  3.  Végül a „UserName” változót rendbe kell tenni, mivel lényegében null karakterekkel lesz kitöltve, így a Chr(0) megtalálása előtt kivonjuk a változóban lévő karaktereket.

Na látod, ez nem is volt olyan rossz! És most legalább, ha foglalkozni kell vele mdb adatbázis sérülés, tudni fogja, hogy ki használta utoljára az adatbázist, így kit hibáztathat! (Persze itt viccelek!)

Szerző Bevezetés:

Mitchell Pond adat-helyreállítási szakértő DataNumen, Inc., amely világelső az adat-helyreállítási technológiák területén, beleértve javítás SQL Server probléma és Excel helyreállítási szoftvertermékek. További információért látogasson el www.datanumen.com

Oszd meg most:

Hozzászólások lezárva.