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

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
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:
- „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.
- 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.
- 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
