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

Այսպիսով, եկեք որոշենք, թե ինչ ենք ուզում անել մեր ծածկագիրը…
«Թույլ տվեք ունենալ ներկայումս մուտքագրված օգտվողի անունը»
Նախ ՝ ծածկագիրը.
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- ի շրջանակներում:
Այժմ դա արվել է, մենք ստեղծում ենք մեր սեփական գործառույթը, որից զանգահարելու ենք դեպի այս արտաքին գործառույթը: Մեր գործառույթի կոդը բավականին նվազագույն է, բայց եկեք անցնենք հիմնական տարրերով.
- «ՕգտատիրոջԱնուն = Space(255)» – եթե վրիպազերծիչի կոդը դիտեք, կտեսնեք, որ երբ կանչվում է «GetUser()» ֆունկցիան, դրան փոխանցվող «ՕգտատիրոջԱնուն» փոփոխականը իրականում վերագրվում է։ Որպեսզի դա տեղի ունենա, փոփոխականին անհրաժեշտ է բավարար հիշողություն հատկացնել տվյալների պահպանման համար, ուստի մենք փոփոխականին հատկացնում ենք ընդամենը 255 տարածք, քանի որ դա պետք է ավելի քան բավարար լինի օգտատերերի անունների մեծ մասի (եթե ոչ բոլորի) համար։
- Մենք վերադարձնում ենք վերադարձի արժեքը ֆունկցիայի զանգից «ReturnStatus» փոփոխականում: Zeroրոյական (0) այստեղ նշանակում է, որ զանգը հաջող էր, այլ բան նշանակում է, որ սխալ է տեղի ունեցել:
- Վերջապես, «UserName» փոփոխականը պետք է դասավորվի, քանի որ այն ըստ էության կլցվի զրոյական նիշերով, այնպես որ մենք դուրս ենք բերում այն նիշերը, որոնք գտնվում են փոփոխականում, նախքան Chr (0) գտնելը:
Տեսեք, հիմա դա այնքան էլ վատ չէր, չէ՞: Եվ հիմա, համենայն դեպս, եթե գործ ունենաք mdb տվյալների շտեմարանի կոռուպցիա, Դուք կիմանաք, թե ով է վերջին անգամ օգտագործում տվյալների բազան, որպեսզի ում կարողանաք մեղադրել: (Իհարկե կատակ եմ անում այստեղ):
Հեղինակի ներածություն.
Mitchell Pond- ը տվյալների վերականգման փորձագետ է DataNumen, Inc., որը տվյալների վերականգման տեխնոլոգիաների համաշխարհային առաջատարն է, այդ թվում նորոգում SQL Server խնդիր և գերազանցել վերականգնման ծրագրային արտադրանքները: Լրացուցիչ տեղեկությունների համար այցելեք www.datanumen.com
