Как да получите потребителското име на лицето, което в момента използва базата данни чрез VBA

Споделете сега:

Трябва да знаете кой във вашия бизнес е добавил определен запис? Или кой го актуализира последно? Това е доста често срещано изискване, но за съжаление не такова, за което Microsoft Access е вградил функционалност. Простото добавяне на поле „последно актуализирано от“ към вашата таблица може (в много случаи) да бъде достатъчно, за да отговори на most нужди, но как да разберете кой е актуализирал записа, ако 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.  „UserName = Space (255)“ - ако преминете през кода в дебъгера, това, което ще видите, е, че когато се извика функцията „GetUser ()“, променливата „UserName“, която предаваме към нея, всъщност се презаписва. За да се случи това, променливата се нуждае от достатъчно памет, заделена за съхранение на данните, така че ние просто разпределяме 255 пробела за променливата, тъй като това трябва да е повече от достатъчно за most (ако не всички) потребителски имена, които трябва да се съдържат в.
  2. Ние улавяме връщаната стойност от извикването на функцията в променливата “returnStatus”. Нула (0) тук означава, че обаждането е било успешно, а всичко друго означава, че е възникнала грешка.
  3.  И накрая, променливата „UserName“ трябва да бъде подредена, тъй като тя по същество ще бъде подплатена с нулеви символи, така че извличаме символите, които са в променливата, преди да бъде намерен Chr (0).

Вижте - сега това не беше толкова лошо, нали! И сега, поне ако трябва да се справите повреда на базата данни на mdb, ще знаете кой е използвал базата данни последно, за да можете да обвинявате! (Шегувам се тук, разбира се!)

Въведение на автора:

Мичъл Понд е експерт по възстановяване на данни в DataNumen, Inc., която е световен лидер в технологиите за възстановяване на данни, включително ремонт SQL Server проблем и excel софтуерни продукти за възстановяване. За повече информация посетете WWW.datanumen.com

Споделете сега:

Коментарите са забранени.