VBA vasitəsilə verilənlər bazasından hazırda istifadə edən şəxsin istifadəçi adını necə əldə etmək olar

İndi paylaş:

Biznesinizdə kimin müəyyən bir qeyd əlavə etdiyini və ya onu sonuncu dəfə kimin yenilədiyini bilmək istəyirsiniz? Bu, olduqca yaygın bir tələbdir, lakin təəssüf ki, Microsoft Access-in daxili funksionallığı tələb etmir. Cədvəlinizə sadəcə "sonuncu dəfə yenilənən" sahəsinin əlavə edilməsi (bir çox hallarda) əksər ehtiyacları ödəmək üçün kifayət edə bilər, amma Access sizə deyə bilmirsə, qeydi kimin yenilədiyini necə bilirsiniz? Bu məqalədə sizə göstərəcəyimiz kimi, sizə lazım olan tək şey kiçik bir VBA kodudur.

İstifadəçi adını çəkmək üçün öz “giriş” formanızı yaratmağa ehtiyac yoxdur

Ms Access verilənlər bazasıVerilənlər bazanızın özünəməxsus giriş forması və ya mexanizminə malik olmadıqda, hazırda verilənlər bazasından kimin istifadə etdiyini/daxil olduğunu öyrənə biləcəyiniz yeganə yol Windows Əməliyyat Sistemi fayllarından birini, xüsusən “mpr.dll” faylını istifadə etməkdir. fayl. Əgər siz əvvəllər kodunuzda xarici dll-lərdən istifadə etməmisinizsə, bu, bir az qorxulu görünə bilər, lakin aşağıdakı kodda görəcəyiniz kimi, əslində olduqca düz irəliləyir.

Beləliklə, kodumuzdan nə etmək istədiyimizi müəyyən edək…

“Hazırda daxil olmuş istifadəçinin adını verim”

Birincisi, kod:

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

Kod izah edildi

Hazırda Daxil olan İstifadəçi

Görəcəyiniz ilk şey mpr.dll faylında olan xarici funksiyaya istinad etdiyimizdir. Biz bunu dll-də olan ictimai funksiya üçün yerli adı (GetUser) elan etməklə edirik (bu halda WNetGetUserA). – funksiya çağırışı üçün hansı parametrlərin lazım olduğunu da müəyyən edirik – bu halda “Ad”, “İstifadəçi Adı” və “Uzunluq” parametrləri. Burada bizi həqiqətən maraqlandıran yeganə şey "İstifadəçi Adı"dır, lakin qalanları da təmin edilməlidir, çünki funksiya dll daxilində necə qurulur.

İndi bu iş tamamlandı, biz öz funksiyamızı yaradırıq, ondan bu xarici funksiyaya zəng edəcəyik. Funksiyamızın kodu olduqca minimaldır, lakin gəlin əsas elementləri nəzərdən keçirək:

  1.  “İstifadəçi Adı = Boşluq(255)” – əgər ayıklayıcıdakı kodu addım-addım nəzərdən keçirsəniz, “GetUser()” funksiyası çağırıldıqda, ona ötürdüyümüz “İstifadəçi Adı” dəyişəninin əslində yenidən yazıldığını görəcəksiniz. Bunun baş verməsi üçün dəyişənin məlumatların saxlanması üçün kifayət qədər yaddaş ayrılmalıdır, ona görə də dəyişənə sadəcə 255 boşluq simvolu ayırırıq, çünki bu, əksər (əgər hamısı olmasa) istifadəçi adlarının daxil olması üçün kifayət qədər olmalıdır.
  2. Biz “returnStatus” dəyişənindəki funksiya çağırışından qaytarılan dəyəri əldə edirik. Burada sıfır (0) zəngin uğurlu olduğunu, başqa hər şey xətanın baş verdiyini bildirir.
  3.  Nəhayət, “İstifadəçiAdı” dəyişəninin səliqə-sahmana ehtiyacı var, çünki o, mahiyyətcə boş simvollarla doldurulacaq, ona görə də Chr(0) tapılmamışdan əvvəl dəyişəndə ​​olan simvolları çıxarırıq.

Bax, indi o qədər də pis deyildi! İndi, heç olmasa, bununla məşğul olmaq lazımdırsa mdb verilənlər bazası korrupsiyası, verilənlər bazasından ən son kimin istifadə etdiyini biləcəksiniz ki, kimi günahlandıra bilərsiniz! (Mən burada əlbəttə zarafat edirəm!)

Müəllif Giriş:

Mitchell Pond məlumatların bərpası üzrə mütəxəssisdir DataNumendaxil olmaqla məlumatların bərpası texnologiyaları üzrə dünya lideri olan , Inc təmir SQL Server problem və excel bərpa proqram məhsulları. Ətraflı məlumat üçün ziyarət edin www.datanumen.com

İndi paylaş:

Şərhlər bağlıdır.