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

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

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

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

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

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