Reikia žinoti, kas jūsų įmonėje pridėjo konkretų įrašą? Arba kas jį paskutinį kartą atnaujino? Tai gana dažnas reikalavimas, tačiau, deja, „Microsoft Access“ neturi integruotų funkcijų šiam tikslui. Paprasčiausiai pridėjus lauką „paskutinį kartą atnaujino“ į lentelę (daugeliu atvejų) gali pakakti daugumai poreikių patenkinti, bet kaip žinoti, kas atnaujino įrašą, jei „Access“ negali to pasakyti? Kaip parodys šis straipsnis, jums tereikia šiek tiek VBA kodo.
Nereikia kurti savo prisijungimo formos, kad užfiksuotumėte vartotojo vardą
Nebent jūsų duomenų bazėje yra atskira prisijungimo forma arba mechanizmas, vienintelis būdas sužinoti, kas šiuo metu naudojasi / prie jos prisijungia, yra naudoti vieną iš „Windows“ operacinės sistemos failų – konkrečiai „mpr.dll“. failą. Jei anksčiau savo kode nenaudojote išorinių dll, tai gali atrodyti šiek tiek bauginančiai, bet, kaip matysite toliau pateiktame kode, tai iš tikrųjų yra gana paprasta.
Taigi – apibrėžkime, ką norime, kad mūsų kodas darytų…
„Leiskite man sužinoti šiuo metu prisijungusio vartotojo vardą“
Pirma, kodas:
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
Kodas, paaiškino
Pirmas dalykas, kurį pamatysite, yra tai, kad darome nuorodą į išorinę funkciją, esančią mpr.dll faile. Tai darome deklaruodami vietinį viešosios funkcijos, esančios dll, pavadinimą („GetUser“) (šiuo atveju WNetGetUserA). – taip pat apibrėžiame, kokie parametrai reikalingi funkcijos iškvietimui – šiuo atveju parametrai „Vardas“, „Vartotojo vardas“ ir „Ilgis“. Vienintelis, kuriuo mes tikrai domimės, yra „Vartotojo vardas“, bet likusi dalis taip pat turi būti pateikta, nes taip funkcija nustatoma dll.
Dabar tai padaryta, sukuriame savo funkciją, iš kurios iškviesime šią išorinę funkciją. Mūsų funkcijos kodas yra gana minimalus, bet panagrinėkime pagrindinius elementus:
- „UserName = Space(255)“ – jei peržiūrėsite kodą derinimo priemonėje, pamatysite, kad iškvietus funkciją „GetUser()“, jai perduodamas kintamasis „UserName“ yra perrašomas. Kad tai įvyktų, kintamajam reikia skirti pakankamai atminties duomenims saugoti, todėl kintamajam skiriame tik 255 tarpo simbolius, nes to turėtų pakakti daugumai (jei ne visiems) vartotojų vardams.
- Grąžinamąją reikšmę iš funkcijos iškvietimo fiksuojame kintamajame „returnStatus“. Nulis (0) reiškia, kad skambutis buvo sėkmingas, o visa kita reiškia, kad įvyko klaida.
- Galiausiai, kintamąjį „UserName“ reikia sutvarkyti, nes jis iš esmės bus užpildytas nuliniais simboliais, todėl išgausime kintamajame esančius simbolius prieš randant Chr(0).
Žiūrėk – dabar tai nebuvo taip blogai! Ir dabar, bent jau jei turite susidoroti mdb duomenų bazės sugadinimas, jūs žinosite, kas paskutinį kartą naudojosi duomenų baze, todėl ką galite kaltinti! (Žinoma, aš čia juokauju!)
Autoriaus įvadas:
Mitchell Pond yra duomenų atkūrimo ekspertas DataNumen, Inc., kuri yra pasaulyje duomenų atkūrimo technologijų lyderė, įskaitant remontas SQL Server problema ir Excel atkūrimo programinės įrangos produktai. Norėdami gauti daugiau informacijos, apsilankykite WWW.datanumen.com
