Ako je možné získať meno používateľa osoby, ktorá v súčasnosti používa databázu, prostredníctvom VBA

Zdieľať teraz:

Potrebujete vedieť, kto vo vašej firme pridal konkrétny záznam? Alebo kto ho naposledy aktualizoval? Je to pomerne bežná požiadavka, ale bohužiaľ nie taká, na ktorú má Microsoft Access zabudované funkcie. Jednoduché pridanie poľa „naposledy aktualizoval“ do tabuľky môže (v mnohých prípadoch) stačiť na splnenie väčšiny potrieb, ale ako zistíte, kto záznam aktualizoval, ak vám Access to nevie povedať? Potrebujete len trochu kódu VBA, ako vám ukáže tento článok.

Na zaznamenanie používateľského mena nie je potrebné vytvárať si vlastný „prihlasovací“ formulár

Databáza MS AccessAk vaša databáza nemá vlastný prihlasovací formulár alebo mechanizmus, potom budete mať jediný spôsob, ako zistiť, kto v súčasnosti databázu používa alebo je do nej prihlásený, pomocou jedného zo súborov operačného systému Windows - konkrétne „mpr.dll“. spis. Ak ste vo svojom kóde predtým nepoužívali externé súbory dll, môže sa to zdať trochu skľučujúce, ale ako uvidíte v nižšie uvedenom kóde, je to skutočne celkom jednoduché.

Takže - definujme, čo chceme, aby náš kód urobil ...

"Dovoľte mi, aby som mal meno aktuálne prihláseného používateľa"

Po prvé, 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

Kód, vysvetlené

Aktuálne prihlásený používateľ

Prvá vec, ktorú uvidíte, je, že odkazujeme na externú funkciu obsiahnutú v súbore mpr.dll. Robíme to tak, že deklarujeme miestny názov (GetUser) pre verejnú funkciu obsiahnutú v dll (v tomto prípade WNetGetUserA). - definujeme tiež, aké parametre sú potrebné pre volanie funkcie - v tomto prípade parametre „Meno“, „Meno používateľa“ a „Dĺžka“. Jediný, kto nás tu skutočne zaujíma, je „UserName“, ale je potrebné dodať aj zvyšok, pretože takto je nastavená funkcia v dll.

Teraz je hotovo, vytvoríme si vlastnú funkciu, z ktorej budeme volať túto externú funkciu. Kód našej funkcie je dosť minimálny, ale poďme si prejsť kľúčové prvky:

  1.  „UserName = Space(255)“ – ak si prejdete kód v debuggeri, uvidíte, že pri volaní funkcie „GetUser()“ sa premenná „UserName“, ktorú jej odovzdávame, prepíše. Aby sa to stalo, premenná potrebuje dostatok pamäte na uloženie údajov, takže premennej pridelíme iba 255 medzerových znakov, pretože to by malo stačiť na uloženie väčšiny (ak nie všetkých) používateľských mien.
  2. Zachytíme návratovú hodnotu z volania funkcie do premennej „returnStatus“. Nula (0) tu znamená, že hovor bol úspešný, čokoľvek iné znamená, že došlo k chybe.
  3.  Nakoniec musí byť premenná „UserName“ uprataná, pretože bude v podstate vyplnená nulovými znakmi, aby sme extrahovali znaky, ktoré sú v premennej, skôr ako sa nájde Chr (0).

Vidíte - teraz to nebolo také zlé, bolo to! A teraz, aspoň ak s tým musíte zápasiť poškodenie databázy mdb, budete vedieť, kto naposledy používal databázu, takže koho môžete viniť! (Samozrejme tu žartujem!)

Úvod autora:

Mitchell Pond je expert na obnovu dát v DataNumen, Inc., ktorá je svetovým lídrom v oblasti technológií obnovy dát, vrátane oprava SQL Server problém a vynikajúce softvérové ​​produkty na obnovenie. Pre viac informácií navštívte www.datanumen. S

Zdieľať teraz:

Komentáre sú uzavreté.