Paano Makukuha ang Pangalan ng Gumagamit ng Taong kasalukuyang Gumagamit ng Database sa pamamagitan ng VBA

Ipamahagi ngayon:

Kailangan mo bang malaman kung sino sa iyong negosyo ang nagdagdag ng isang partikular na record? O sino ang huling nag-update nito? Ito ay isang karaniwang kinakailangan, ngunit sa kasamaang palad, hindi ito isang bagay na may built-in na functionality ang Microsoft Access. Ang pagdaragdag lamang ng field na "huling na-update ni" sa iyong talahanayan ay maaaring (sa maraming pagkakataon) sapat na upang matugunan ang karamihan sa mga pangangailangan, ngunit paano mo malalaman kung sino ang nag-update ng record kung hindi ka masabi ng Access? Isang maliit na VBA code lang ang kailangan mo, gaya ng ipapakita sa iyo ng artikulong ito.

Hindi na kailangang lumikha ng iyong sariling form na "pag-login" upang makuha ang pangalan ng gumagamit

Ms Access DatabaseMaliban kung ang iyong database ay may sariling form o mekanismo sa pag-login, kung gayon ang tanging paraan na malalaman mo kung sino ang kasalukuyang gumagamit / naka-log in sa database ay ang paggamit ng isa sa mga file ng Windows Operating System - partikular ang "mpr.dll" file Kung hindi mo pa nagamit ang panlabas na dll's sa iyong code dati, maaaring tila ito ay nakakatakot, ngunit tulad ng makikita mo sa code sa ibaba, talagang tuwid itong pasulong.

Kaya - tukuyin natin kung ano ang nais nating gawin ng aming code ...

"Hayaan mo akong magkaroon ng pangalan ng kasalukuyang naka-log in na gumagamit"

Una, ang code:

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

Ang code, ipinaliwanag

Ang Gumagamit na kasalukuyang Naka-log In

Ang unang bagay na makikita mo ay gumagawa kami ng isang sanggunian sa isang panlabas na pagpapaandar, na nilalaman sa loob ng mpr.dll file. Ginagawa namin ito sa pamamagitan ng pagdedeklara ng isang lokal na pangalan (GetUser) para sa pagpapaandar ng publiko na nilalaman sa dll (sa pagkakataong ito, WNetGetUserA). - Tinutukoy din namin kung anong mga parameter ang kinakailangan para sa tawag na pag-andar - sa kasong ito ang mga parameter na "Pangalan", "UserName", at "Haba". Ang nag-iisa lamang na talagang interesado kami dito ay ang "UserName" ngunit ang natitira ay kailangang ibigay din tulad nito kung paano naka-set up ang pagpapaandar sa loob ng dll.

Ngayon ay nagawa na, lumilikha kami ng aming sariling pag-andar, kung saan tatawag kami sa panlabas na pagpapaandar na ito. Ang code para sa aming pagpapaandar ay medyo minimal ngunit tumakbo tayo sa pamamagitan ng mga pangunahing elemento:

  1.  “UserName = Space(255)” – kung susuriin mo ang code sa debugger, makikita mo na kapag tinawag ang function na “GetUser()”, ang variable na “UserName” na ipinapasa natin dito ay talagang napapatungan. Para mangyari iyon, ang variable ay nangangailangan ng sapat na memorya na inilaan para maiimbak ang data, kaya maglalaan lang tayo ng 255 space chars sa variable dahil dapat ay higit pa iyon sa sapat para sa karamihan (kung hindi lahat) ng mga user name na nakapaloob dito.
  2. Kinukuha namin ang halaga ng pagbabalik mula sa tawag na pag-andar sa variable na "returnStatus". Ang isang zero (0) dito ay nangangahulugang matagumpay ang tawag, anupaman ang ibig sabihin ay may naganap na error.
  3.  Sa wakas, ang variable na "UserName" ay nangangailangan ng pag-ayos dahil ito ay mahalagang mai-pad na may mga null chars kaya't kinukuha namin ang mga chars na nasa variable bago makita ang isang Chr (0).

Kita n'yo - ngayon na hindi iyon masama diba! At ngayon, hindi bababa sa kung kailangan mong makitungo mdb database ng katiwalian, malalaman mo kung sino ang huling gumagamit ng database upang kung sino ang maaari mong sisihin! (Nagbibiro ako dito syempre!)

Panimula ng May-akda:

Ang Mitchell Pond ay isang dalubhasa sa pagbawi ng data sa DataNumen, Inc., na pinuno ng mundo sa mga teknolohiya sa pagbawi ng data, kasama ang magkumpuni SQL Server problema at excel mga produkto ng pagbawi ng software. Para sa karagdagang impormasyon pagbisita www.datanumen. Sa

Ipamahagi ngayon:

Mga komento ay sarado.