როგორ მივიღოთ იმ პირის მომხმარებლის სახელი, რომელიც ამჟამად იყენებს მონაცემთა ბაზას 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). - ჩვენ ასევე განვსაზღვრავთ რა პარამეტრებს სჭირდებათ ფუნქციის გამოძახებისთვის - ამ შემთხვევაში "Name", "UserName" და "Length" პარამეტრები. ერთადერთი, რაც ჩვენ ნამდვილად გვაინტერესებს აქ არის "მომხმარებლის სახელი", მაგრამ დარჩენილი ნაწილიც უნდა იყოს მიწოდებული, რადგან ეს ფუნქცია დაყენებულია dll-ში.

ახლა, რაც გაკეთდა, ჩვენ ვქმნით ჩვენს საკუთარ ფუნქციას, საიდანაც გამოვიძახებთ ამ გარე ფუნქციაზე. ჩვენი ფუნქციის კოდი საკმაოდ მინიმალურია, მაგრამ მოდით გავიაროთ ძირითადი ელემენტები:

  1.  „მომხმარებლის სახელი = სივრცე(255)“ – თუ დებაგერში კოდს გადახედავთ, დაინახავთ, რომ როდესაც გამოიძახება „GetUser()“ ფუნქცია, მასზე გადაცემული „მომხმარებლის სახელის“ ცვლადი რეალურად გადაიწერება. ამისათვის ცვლადს სჭირდება საკმარისი მეხსიერების გამოყოფა მონაცემების შესანახად, ამიტომ ჩვენ უბრალოდ 255 სივრცის სიმბოლოს ვუთმობთ ცვლადს, რადგან ეს საკმარისზე მეტი უნდა იყოს მომხმარებლის სახელების უმეტესობისთვის (თუ არა ყველასთვის).
  2. ჩვენ ვიღებთ დაბრუნებულ მნიშვნელობას ფუნქციის გამოძახებიდან "returnStatus" ცვლადში. ნული (0) აქ ნიშნავს, რომ ზარი წარმატებული იყო, სხვა ყველაფერი ნიშნავს შეცდომას.
  3.  დაბოლოს, "UserName" ცვლადი საჭიროებს დალაგებას, რადგან ის არსებითად შეივსება ნულოვანი სიმბოლოებით, ასე რომ, ჩვენ გამოვყოფთ სიმბოლოებს, რომლებიც ცვლადშია, სანამ Chr(0) მოიძებნება.

ნახეთ - ახლა ეს არც ისე ცუდი იყო! ახლა კი, ყოველ შემთხვევაში, თუ საქმე გაქვთ mdb მონაცემთა ბაზის კორუფცია, თქვენ გეცოდინებათ ვინ იყენებდა მონაცემთა ბაზას ბოლოს და ვის დაადანაშაულებთ! (აქ ვხუმრობ, რა თქმა უნდა!)

ავტორი შესავალი:

მიტჩელ პონდი არის მონაცემთა აღდგენის ექსპერტი DataNumen, Inc., რომელიც მსოფლიო ლიდერია მონაცემთა აღდგენის ტექნოლოგიებში, მათ შორის სარემონტო SQL Server პრობლემა და Excel-ის აღდგენის პროგრამული პროდუქტები. დამატებითი ინფორმაციისთვის ეწვიეთ www.datanumen. ერთად

გააზიარე ახლა:

კომენტარები დახურულია.