Cara Mendapatkan Nama Pengguna dari Orang yang Saat Ini Menggunakan Database melalui VBA

Bagikan sekarang:

Perlu mengetahui siapa di perusahaan Anda yang menambahkan catatan tertentu? Atau siapa yang terakhir memperbaruinya? Ini adalah kebutuhan yang cukup umum, tetapi sayangnya Microsoft Access tidak memiliki fungsi bawaan untuk itu. Menambahkan kolom "terakhir diperbarui oleh" ke tabel Anda (dalam banyak kasus) sudah cukup untuk memenuhi sebagian besar kebutuhan, tetapi bagaimana Anda tahu siapa yang memperbarui catatan tersebut jika Access tidak dapat memberi tahu Anda? Sedikit kode VBA adalah semua yang Anda butuhkan, seperti yang akan ditunjukkan artikel ini.

Tidak perlu membuat formulir "login" Anda sendiri untuk menangkap nama pengguna

Basis Data Ms AccessKecuali jika database Anda memiliki bentuk atau mekanisme loginnya sendiri, satu-satunya cara agar Anda dapat mengetahui siapa yang saat ini menggunakan / login ke database adalah menggunakan salah satu file Sistem Operasi Windows - khususnya "mpr.dll" mengajukan. Jika Anda belum pernah menggunakan dll eksternal dalam kode Anda sebelumnya, ini bisa tampak sedikit menakutkan, tetapi seperti yang akan Anda lihat pada kode di bawah ini, sebenarnya cukup mudah.

Jadi - mari kita tentukan apa yang kita ingin kode kita lakukan ...

“Izinkan saya mengetahui nama pengguna yang saat ini masuk”

Pertama, kode:

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

Kode itu, jelaskan

Pengguna yang Saat Ini Masuk

Hal pertama yang akan Anda lihat adalah kami membuat referensi ke fungsi eksternal, yang terdapat di dalam file mpr.dll. Kami melakukan ini dengan mendeklarasikan nama lokal (GetUser) untuk fungsi publik yang terdapat dalam dll (dalam hal ini, WNetGetUserA). - kita juga menentukan parameter apa yang diperlukan untuk pemanggilan fungsi - dalam hal ini parameter "Nama", "Nama Pengguna", dan "Panjang". Satu-satunya yang benar-benar kami minati di sini adalah "UserName" tetapi sisanya harus disediakan juga karena begitulah fungsi diatur dalam dll.

Sekarang setelah selesai, kita membuat fungsi kita sendiri, dari situ kita akan memanggil fungsi eksternal ini. Kode untuk fungsi kita sangat minim tetapi mari kita jalankan melalui elemen-elemen kunci:

  1.  “UserName = Space(255)” – jika Anda menelusuri kode di debugger, yang akan Anda lihat adalah bahwa ketika fungsi “GetUser()” dipanggil, variabel “UserName” yang kita berikan kepadanya sebenarnya ditimpa. Agar hal itu terjadi, variabel tersebut membutuhkan alokasi memori yang cukup untuk menyimpan data, jadi kita hanya mengalokasikan 255 karakter spasi ke variabel tersebut karena itu seharusnya lebih dari cukup untuk sebagian besar (jika tidak semua) nama pengguna.
  2. Kami menangkap nilai kembali dari pemanggilan fungsi dalam variabel "returnStatus". Angka nol (0) di sini berarti panggilan berhasil, yang lainnya berarti telah terjadi kesalahan.
  3.  Terakhir, variabel "UserName" perlu dirapikan karena pada dasarnya akan diisi dengan karakter nol sehingga kami mengekstrak karakter yang ada di variabel sebelum Chr (0) ditemukan.

Lihat - sekarang tidak seburuk itu! Dan sekarang, setidaknya jika Anda harus berurusan dengan korupsi database mdb, Anda akan tahu siapa yang terakhir kali menggunakan database sehingga siapa yang dapat Anda salahkan! (Saya bercanda di sini tentu saja!)

Pengantar Penulis:

Mitchell Pond adalah pakar pemulihan data di DataNumen, Inc., yang merupakan pemimpin dunia dalam teknologi pemulihan data, termasuk memperbaiki SQL Server masalah dan unggul dalam produk perangkat lunak pemulihan. Untuk informasi lebih lanjut kunjungi www.datanumen.com

Bagikan sekarang:

Komentar ditutup.