İşletmenizde belirli bir kaydı kimin eklediğini veya en son kimin güncellediğini bilmeniz mi gerekiyor? Bu oldukça yaygın bir gereksinim, ancak ne yazık ki Microsoft Access'in yerleşik bir işlevi yok. Tablonuza basitçe bir "son güncelleyen" alanı eklemek (çoğu durumda) çoğu ihtiyacı karşılamak için yeterli olabilir, ancak Access size bunu söyleyemiyorsa kaydı kimin güncellediğini nasıl bileceksiniz? Bu makalede gösterileceği gibi, ihtiyacınız olan tek şey biraz VBA kodu.
Kullanıcı adını yakalamak için kendi "giriş" formunuzu oluşturmanıza gerek yok
Veritabanınızın kendi oturum açma formu veya mekanizması yoksa, şu anda veritabanını kimin kullandığını/veritabanında oturum açtığını bilmenin tek yolu Windows İşletim Sistemi dosyalarından birini – özellikle “mpr.dll”yi kullanmaktır. dosya. Daha önce kodunuzda harici dll kullanmadıysanız, biraz göz korkutucu görünebilir, ancak aşağıdaki kodda göreceğiniz gibi, aslında oldukça basittir.
Öyleyse - kodumuzun ne yapmasını istediğimizi tanımlayalım…
“Şu anda oturum açmış olan kullanıcının adını almama izin ver”
İlk olarak, 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
Açıklanan kod
Göreceğiniz ilk şey, mpr.dll dosyasında bulunan harici bir işleve gönderme yaptığımız olacaktır. Bunu, dll'de bulunan genel işlev için yerel bir ad (GetUser) bildirerek yaparız (bu örnekte, WNetGetUserA). – fonksiyon çağrısı için hangi parametrelerin gerekli olduğunu da tanımlarız – bu durumda “Ad”, “KullanıcıAdı” ve “Uzunluk” parametreleri. Burada gerçekten ilgilendiğimiz tek şey “KullanıcıAdı” ama geri kalanın da sağlanması gerekiyor, çünkü işlev dll içinde bu şekilde kuruluyor.
Artık bu yapıldı, bu harici işleve bir çağrı yapacağımız kendi işlevimizi yaratıyoruz. Fonksiyonumuzun kodu oldukça az ama temel unsurları gözden geçirelim:
- “UserName = Space(255)” – kodu hata ayıklayıcıda adım adım incelerseniz, “GetUser()” fonksiyonu çağrıldığında, ona ilettiğimiz “UserName” değişkeninin aslında üzerine yazıldığını göreceksiniz. Bunun gerçekleşmesi için, değişkenin verilerin depolanabileceği kadar bellek ayrılması gerekir, bu nedenle çoğu (hatta tüm) kullanıcı adının içerebileceği kadar yeterli olması için değişkene 255 boşluk karakteri ayırıyoruz.
- İşlev çağrısından dönüş değerini “returnStatus” değişkeninde yakalarız. Buradaki sıfır (0), aramanın başarılı olduğu, başka herhangi bir şey bir hata oluştuğu anlamına gelir.
- Son olarak, "KullanıcıAdı" değişkeninin düzenlenmesi gerekiyor, çünkü aslında boş karakterlerle doldurulacak, bu nedenle bir Chr(0) bulunmadan önce değişkendeki karakterleri çıkaracağız.
Bakın - şimdi bu o kadar da kötü değildi, değil mi? Ve şimdi, en azından uğraşmak zorundaysan mdb veritabanı bozulması, veritabanını en son kimin kullandığını bileceksin, böylece kimi suçlayabilirsin! (Burada şaka yapıyorum elbette!)
Yazar Tanıtımı:
Mitchell Pond, bir veri kurtarma uzmanıdır. DataNumendahil olmak üzere veri kurtarma teknolojilerinde dünya lideri olan , Inc. onarım SQL Server sorun ve excel kurtarma yazılımı ürünleri. Daha fazla bilgi için ziyaret edin www.datanumen.com
