Ինչպես ձեռք բերել VBA- ի միջոցով տվյալների շտեմարան օգտագործող անձի օգտվողի անունը

Կիսվել հիմա ՝

Անհրաժեշտ է իմանալ, թե ձեր բիզնեսում ով է ավելացրել որոշակի գրառում: Կամ ով է այն վերջին անգամ թարմացրել: Սա բավականին տարածված պահանջ է, բայց, ցավոք, այն չէ, որի համար Microsoft Access-ը ներկառուցված ֆունկցիոնալություն ունի: Պարզապես ձեր աղյուսակում «վերջին թարմացումը» դաշտը ավելացնելը կարող է (շատ դեպքերում) բավարար լինել մեծ մասամբ կարիքները բավարարելու համար, բայց ինչպե՞ս իմանալ, թե ով է թարմացրել գրառումը, եթե Access-ը չի կարող ձեզ ասել: Այս հոդվածը ցույց կտա ձեզ մի փոքր VBA կոդ:

Անհրաժեշտ չէ ստեղծել ձեր սեփական «մուտքի» ձևը ՝ օգտվողի անունը գրավելու համար

Ms Access տվյալների շտեմարանՔանի դեռ ձեր տվյալների բազան չունի իր սեփական մուտքի ձևը կամ մեխանիզմը, ապա միակ միջոցը, որով դուք կկարողանաք իմանալ, թե ով է ներկայումս օգտագործում / մուտք է գործում տվյալների շտեմարանում, դա Windows- ի Օպերացիոն համակարգի ֆայլերից մեկն է `մասնավորապես« 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 ֆայլում պարունակվող արտաքին գործառույթին: Մենք դա անում ենք հայտարարելով տեղական անուն (GetUser) dll- ում պարունակվող հասարակական գործառույթի համար (այս դեպքում ՝ WNetGetUserA): - մենք նաև սահմանում ենք, թե որ պարամետրերն են անհրաժեշտ ֆունկցիայի զանգի համար. Այս դեպքում «Անուն», «Օգտագործողի անուն» և «Երկարություն» պարամետրերը: Միակ բանը, որ մեզ իսկապես հետաքրքրում է այստեղ, «UserName» - ն է, բայց մնացած մասը նույնպես պետք է մատակարարվի, քանի որ ֆունկցիան այսպես է կարգավորվում dll- ի շրջանակներում:

Այժմ դա արվել է, մենք ստեղծում ենք մեր սեփական գործառույթը, որից զանգահարելու ենք դեպի այս արտաքին գործառույթը: Մեր գործառույթի կոդը բավականին նվազագույն է, բայց եկեք անցնենք հիմնական տարրերով.

  1.  «ՕգտատիրոջԱնուն = Space(255)» – եթե վրիպազերծիչի կոդը դիտեք, կտեսնեք, որ երբ կանչվում է «GetUser()» ֆունկցիան, դրան փոխանցվող «ՕգտատիրոջԱնուն» փոփոխականը իրականում վերագրվում է։ Որպեսզի դա տեղի ունենա, փոփոխականին անհրաժեշտ է բավարար հիշողություն հատկացնել տվյալների պահպանման համար, ուստի մենք փոփոխականին հատկացնում ենք ընդամենը 255 տարածք, քանի որ դա պետք է ավելի քան բավարար լինի օգտատերերի անունների մեծ մասի (եթե ոչ բոլորի) համար։
  2. Մենք վերադարձնում ենք վերադարձի արժեքը ֆունկցիայի զանգից «ReturnStatus» փոփոխականում: Zeroրոյական (0) այստեղ նշանակում է, որ զանգը հաջող էր, այլ բան նշանակում է, որ սխալ է տեղի ունեցել:
  3.  Վերջապես, «UserName» փոփոխականը պետք է դասավորվի, քանի որ այն ըստ էության կլցվի զրոյական նիշերով, այնպես որ մենք դուրս ենք բերում այն ​​նիշերը, որոնք գտնվում են փոփոխականում, նախքան Chr (0) գտնելը:

Տեսեք, հիմա դա այնքան էլ վատ չէր, չէ՞: Եվ հիմա, համենայն դեպս, եթե գործ ունենաք mdb տվյալների շտեմարանի կոռուպցիա, Դուք կիմանաք, թե ով է վերջին անգամ օգտագործում տվյալների բազան, որպեսզի ում կարողանաք մեղադրել: (Իհարկե կատակ եմ անում այստեղ):

Հեղինակի ներածություն.

Mitchell Pond- ը տվյալների վերականգման փորձագետ է DataNumen, Inc., որը տվյալների վերականգման տեխնոլոգիաների համաշխարհային առաջատարն է, այդ թվում նորոգում SQL Server խնդիր և գերազանցել վերականգնման ծրագրային արտադրանքները: Լրացուցիչ տեղեկությունների համար այցելեք www.datanumen.com

Կիսվել հիմա ՝

Comments փակվում են: