Trebate znati tko je u vašoj tvrtki dodao određeni zapis? Ili tko ga je zadnji ažurirao? To je prilično čest zahtjev, ali nažalost ne onaj za koji je Microsoft Access ugradio funkcionalnost. Jednostavno dodavanje polja "posljednji put ažurirano" u vašu tablicu može (u mnogim slučajevima) biti dovoljno da zadovolji most potrebe, ali kako znati tko je ažurirao zapis ako vam Access ne može reći? Malo VBA koda je sve što trebate, kao što će vam pokazati ovaj članak.
Nema potrebe za stvaranjem vlastitog obrasca za "prijavu" za bilježenje korisničkog imena
Osim ako vaša baza podataka nema vlastiti obrazac ili mehanizam za prijavu, tada ćete jedini način na koji ćete moći znati tko trenutno koristi/prijavljen u bazu podataka jest korištenje jedne od datoteka operativnog sustava Windows – posebno "mpr.dll" datoteka. Ako prije niste koristili vanjske dll-ove u svom kodu, to može djelovati pomalo zastrašujuće, ali kao što ćete vidjeti u donjem kodu, zapravo je prilično jednostavno.
Dakle – definirajmo što želimo da naš kod radi…
"Daj mi ime trenutno prijavljenog korisnika"
Prvo, kod:
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
Šifra, objašnjeno
Prvo što ćete vidjeti je da se pozivamo na vanjsku funkciju koja se nalazi u datoteci mpr.dll. To činimo deklariranjem lokalnog naziva (GetUser) za javnu funkciju sadržanu u dll (u ovom slučaju WNetGetUserA). – također definiramo koji su parametri potrebni za poziv funkcije – u ovom slučaju parametri “Name”, “UserName” i “Length”. Jedini koji nas ovdje stvarno zanima je “UserName”, ali ostatak također treba biti dostavljen jer je to način na koji je funkcija postavljena unutar dll-a.
Sada kada je to učinjeno, stvaramo vlastitu funkciju iz koje ćemo pozivati ovu vanjsku funkciju. Kod za našu funkciju prilično je minimalan, ali prođimo kroz ključne elemente:
- “UserName = Space(255)” – ako prođete kroz kod u alatu za ispravljanje pogrešaka, ono što ćete vidjeti jest da kada se pozove funkcija “GetUser()”, varijabla “UserName” koju joj prosljeđujemo zapravo se prebriše. Da bi se to dogodilo, varijabli je potrebno dodijeliti dovoljno memorije za pohranjivanje podataka, tako da varijabli dodijelimo samo 255 razmaka jer bi to trebalo biti više nego dovoljno za most (ako ne sva) korisnička imena koja će biti sadržana u.
- Hvatamo povratnu vrijednost iz poziva funkcije u varijabli "returnStatus". Nula (0) ovdje znači da je poziv bio uspješan, sve drugo znači da je došlo do pogreške.
- Naposljetku, varijablu "UserName" treba pospremiti jer će biti dopunjena nultim znakovima tako da izdvajamo znakove koji se nalaze u varijabli prije nego što se pronađe Chr(0).
Vidite – to i nije bilo tako loše, zar ne! A sada, barem ako imate posla s oštećenje mdb baze podataka, znat ćete tko je posljednji koristio bazu podataka pa koga možete kriviti! (Šalim se naravno!)
Uvod za autora:
Mitchell Pond je stručnjak za oporavak podataka u DataNumen, Inc., koji je svjetski lider u tehnologijama za oporavak podataka, uključujući popravak SQL Server problem i excel softverski proizvodi za oporavak. Za više informacija posjetite www.datanumen.com
