VBA မှတစ်ဆင့် Database ကို လက်ရှိအသုံးပြုနေသော ပုဂ္ဂိုလ်၏ User Name ကို မည်သို့ရယူရမည်နည်း။

ယခုမျှဝေပါ-

သင့်လုပ်ငန်းမှာ ဘယ်သူက တိကျတဲ့ မှတ်တမ်းတစ်ခုကို ထည့်သွင်းခဲ့လဲဆိုတာ သိလိုပါသလား။ ဒါမှမဟုတ် ဘယ်သူက နောက်ဆုံး အပ်ဒိတ်လုပ်ခဲ့လဲဆိုတာ သိလိုပါသလား။ ဒါဟာ အတော်လေး အဖြစ်များတဲ့ လိုအပ်ချက်တစ်ခုပါ၊ ဒါပေမယ့် ကံမကောင်းစွာပဲ Microsoft Access မှာ built-in လုပ်ဆောင်ချက်တစ်ခု မဟုတ်ပါဘူး။ သင့်ဇယားမှာ “နောက်ဆုံး အပ်ဒိတ်လုပ်ခဲ့သူ” field ကို ထည့်လိုက်ရုံနဲ့ (အများစုမှာ) လိုအပ်ချက်အများစုကို ဖြည့်ဆည်းပေးနိုင်ပေမယ့် Access က သင့်ကို မပြောပြနိုင်ရင် ဘယ်သူက မှတ်တမ်းကို အပ်ဒိတ်လုပ်ခဲ့လဲဆိုတာ ဘယ်လိုသိနိုင်မလဲ။ ဒီဆောင်းပါးက ပြသပေးမှာဖြစ်တဲ့အတွက် VBA code အနည်းငယ်သာ လိုအပ်ပါတယ်။

အသုံးပြုသူအမည်ကိုဖမ်းယူရန် သင်၏ကိုယ်ပိုင် “လော့ဂ်အင်” ဖောင်ကို ဖန်တီးရန် မလိုအပ်ပါ။

Ms Access Databaseသင့်ဒေတာဘေ့စ်တွင် ၎င်း၏ကိုယ်ပိုင် လော့ဂ်အင်ပုံစံ သို့မဟုတ် ယန္တရားမရှိပါက၊ ဒေတာဘေ့စ်သို့ လက်ရှိအသုံးပြုနေသော/ဝင်ရောက်နေသူကို သင်သိနိုင်စေမည့် တစ်ခုတည်းသောနည်းလမ်းမှာ Windows Operating System ဖိုင်များထဲမှ တစ်ခုကို အသုံးပြုခြင်းဖြစ်သည် – အထူးသဖြင့် “mpr.dll” ဖိုင်။ အကယ်၍ သင်သည် သင့်ကုဒ်တွင် ပြင်ပ dll များကို ယခင်က မသုံးဖူးပါက အနည်းငယ် တုန်လှုပ်သွားပုံပေါ်နိုင်သော်လည်း အောက်ပါ ကုဒ်တွင် တွေ့ရသည့်အတိုင်း၊ ၎င်းသည် အမှန်တကယ် ရှေ့သို့ ဖြောင့်ဖြောင့်တန်းတန်း ရောက်နေသည်။

ဒီတော့ ငါတို့ကုဒ်ကို လိုချင်တာကို သတ်မှတ်ကြရအောင်…

"လက်ရှိဝင်ရောက်အသုံးပြုသူ၏အမည်ကို ကျွန်ုပ်အားခွင့်ပြုပါ"

ပထမဦးစွာ၊ ကုဒ်

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

ကုဒ်ကို ရှင်းပြသည်။

လက်ရှိဝင်ရောက်အသုံးပြုသူ

သင်ပထမဆုံးမြင်ရမည့်အရာမှာ mpr.dll ဖိုင်အတွင်းပါရှိသော ပြင်ပလုပ်ဆောင်ချက်ကို ရည်ညွှန်းနေခြင်းဖြစ်ပါသည်။ dll (ဤဥပမာတွင်၊ WNetGetUserA) တွင်ပါရှိသော အများသူငှာ လုပ်ဆောင်မှုအတွက် ဒေသန္တရအမည် (GetUser) ကို ကြေညာခြင်းဖြင့် ၎င်းကို ကျွန်ုပ်တို့ လုပ်ဆောင်သည်။ - လုပ်ဆောင်ချက်ခေါ်ဆိုမှုအတွက် လိုအပ်သော ဘောင်များကို ကျွန်ုပ်တို့လည်း သတ်မှတ်ပေးသည် - ဤကိစ္စတွင် "အမည်"၊ "အသုံးပြုသူအမည်" နှင့် "အရှည်" ကန့်သတ်ချက်များ။ ဤနေရာတွင်ကျွန်ုပ်တို့အမှန်တကယ်စိတ်ဝင်စားသည့်တစ်ခုတည်းသောတစ်ခုတည်းမှာ "UserName" ဖြစ်သည်၊ သို့သော်အကြွင်းအကျန်ကို dll အတွင်းရှိ function ကိုထည့်သွင်းထားသောကြောင့်၎င်းသည်အကြွင်းအကျန်ကိုပေးဆောင်ရမည်ဖြစ်သည်။

ယခု ပြီးသွားပါပြီ၊ ကျွန်ုပ်တို့သည် ဤပြင်ပလုပ်ဆောင်ချက်သို့ ဖုန်းခေါ်ဆိုမည့် ကျွန်ုပ်တို့၏ကိုယ်ပိုင်လုပ်ဆောင်ချက်ကို ဖန်တီးပါသည်။ ကျွန်ုပ်တို့၏လုပ်ဆောင်ချက်အတွက် ကုဒ်သည် အနည်းငယ်မျှသာဖြစ်သော်လည်း အဓိကကျသော အစိတ်အပိုင်းများကို ဖြတ်သန်းကြည့်ကြပါစို့။

  1.  “UserName = Space(255)” – debugger ထဲက code ကို ဆက်လုပ်ကြည့်မယ်ဆိုရင် “GetUser()” function ကို ခေါ်လိုက်တဲ့အခါ ကျွန်တော်တို့ ပေးပို့လိုက်တဲ့ “UserName” variable ဟာ overwrite လုပ်ခံရတာကို တွေ့ရပါလိမ့်မယ်။ အဲဒီလိုဖြစ်ဖို့ variable မှာ data တွေ သိမ်းဆည်းဖို့ memory လုံလောက်စွာ လိုအပ်တာကြောင့် variable ကို space char ၂၅၅ ခုပဲ ခွဲဝေပေးလိုက်ရုံပါပဲ။ အဲဒါက user name အများစု (အားလုံးမဟုတ်ရင်တောင်) ပါဝင်ဖို့ လုံလောက်ပါတယ်။
  2. "returnStatus" variable တွင် function call မှ return value ကို ဖမ်းယူပါသည်။ ဤနေရာတွင် သုည (0) ဆိုသည်မှာ ခေါ်ဆိုမှု အောင်မြင်ပြီး အခြားအရာများ အမှားဖြစ်သွားသည်ဟု ဆိုလိုသည်။
  3.  နောက်ဆုံးတွင်၊ "UserName" variable သည် null chars များဖြင့် အခြေခံအားဖြင့် padded ဖြစ်သည့်အတွက် Chr(0) ကိုမတွေ့မီ variable အတွင်းရှိ chars များကို ထုတ်ယူရန် လိုအပ်ပါသည်။

ကြည့်ပါ- အခုအဲဒါက မဆိုးဘူးဗျ။ ယခုလည်း အနည်းဆုံး ဆက်ဆံရမည်ဆိုလျှင် mdb ဒေတာဘေ့စ်ပုပ်ဒေတာဘေ့စ်ကို ဘယ်သူက နောက်ဆုံးသုံးခဲ့တာလဲဆိုတာ မင်းဘယ်သူလဲဆိုတာ မင်းသိလိမ့်မယ်။ (ဒီမှာ ငါနောက်နေတာတော့ ဟုတ်ပါတယ်!)

စာရေးသူနိဒါန်း:

Mitchell Pond သည် ဒေတာပြန်လည်ရယူရေးဆိုင်ရာ ကျွမ်းကျင်သူဖြစ်သည်။ DataNumen, Inc. အပါအဝင် ဒေတာပြန်လည်ရယူရေးနည်းပညာများတွင် ကမ္ဘာ့ခေါင်းဆောင်ဖြစ်သည်။ ပြုပြင် SQL Server ပြဿနာ နှင့် excel recovery software ထုတ်ကုန်များ။ ပိုမိုသိရှိလိုပါကသွားရောက်ကြည့်ရှု www ။datanumen.com

ယခုမျှဝေပါ-

မှတ်ချက်များကိုပိတ်ထားကြသည်။