VBA-ээр дамжуулан мэдээллийн санг ашиглаж буй хүний ​​нэрийг хэрхэн яаж авах вэ

Одоо хуваалцах:

Танай бизнест хэн тодорхой бичлэг нэмсэнийг мэдэх хэрэгтэй байна уу? Эсвэл хэн хамгийн сүүлд шинэчилсэн бэ? Энэ бол нэлээд түгээмэл шаардлага боловч харамсалтай нь Microsoft Access-ийн суурилуулсан функц биш юм. Хүснэгтэндээ "сүүлд шинэчилсэн" талбарыг нэмэх нь (ихэнх тохиолдолд) ихэнх хэрэгцээг хангахад хангалттай байж болох ч Access танд хэлж чадахгүй бол хэн бичлэгийг шинэчилснийг яаж мэдэх вэ? Энэ нийтлэлд танд харуулахын тулд бага зэрэг VBA код л хэрэгтэй.

Хэрэглэгчийн нэрийг бичихийн тулд өөрийн "нэвтрэх" маягтыг үүсгэх шаардлагагүй болно

Хатагтай хандалтын мэдээллийн санХэрэв таны мэдээллийн баазад өөрийн нэвтрэх хэлбэр, механизм байхгүй бол та одоо мэдээллийн баазыг хэн ашиглаж / нэвтэрч байгааг мэдэх боломжтой цорын ганц арга бол 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 файлд багтсан гадаад функцын талаар лавлагаа өгөх явдал юм. Бид үүнийг dll-д багтсан нийтийн функцэд зориулж (энэ тохиолдолд WNetGetUserA) локал нэрийг (GetUser) зарлах замаар хийдэг. - функцын дуудлагад ямар параметрүүд шаардлагатайг бид мөн тодорхойлдог - энэ тохиолдолд "Нэр", "Хэрэглэгчийн нэр", "Урт" параметрүүд. Бидний энд үнэхээр сонирхож буй цорын ганц зүйл бол "UserName" боловч үлдсэн хэсгийг нь мөн нийлүүлэх шаардлагатай бөгөөд ингэснээр функцийг dll дотор хэрхэн тохируулахыг тохируулна.

Үүнийг хийсний дараа бид өөрсдийн функцийг бий болгодог бөгөөд үүнээс бид энэхүү гадаад функц руу дуудлага хийх болно. Бидний функцын код маш бага боловч гол элементүүдийг авч үзье.

  1.  “Хэрэглэгчийн нэр = Зай(255)” – хэрэв та дибаг хийгч дэх кодыг алхам алхмаар уншвал “GetUser()” функцийг дуудахад бидний дамжуулдаг “Хэрэглэгчийн нэр” хувьсагч дарж бичигддэг болохыг харах болно. Үүний тулд хувьсагч өгөгдөл хадгалахад хангалттай санах ой хуваарилах шаардлагатай тул бид хувьсагчид 255 зайны тэмдэгт хуваарилдаг, учир нь энэ нь ихэнх (бүгд биш бол) хэрэглэгчийн нэрийг агуулахад хангалттай байх ёстой.
  2. Бид буцах утгыг “returnStatus” хувьсагчийн функцийн дуудлагаас авдаг. Тэг (0) бол дуудлага амжилттай болсон гэсэн үг бөгөөд бусад нь алдаа гарсныг илтгэнэ.
  3.  Эцэст нь "UserName" хувьсагчийг цэгцлэх шаардлагатай бөгөөд энэ нь үндсэндээ хоосон тэмдэгтээр дүүргэгдсэн тул Chr (0) олдохоос өмнө хувьсагчид байгаа тэмдэгтүүдийг гаргаж авна.

Одоо хараарай - тийм ч муу биш байсан шүү дээ! Одоо, наад зах нь та шийдвэрлэх хэрэгтэй бол mdb мэдээллийн баазын авлига, мэдээллийн баазыг хамгийн сүүлд хэн ашиглаж байгааг та мэдэх тул хэнийг буруутгах вэ! (Би энд мэдээж тоглож байна!)

Зохиогчийн танилцуулга:

Митчелл Цөөрөм бол мэдээлэл сэргээх мэргэжилтэн юм DataNumen, Үүнд мэдээлэл сэргээх технологиор дэлхийд тэргүүлэгч, Inc. засвар SQL Server асуудал болон excel сэргээх програм хангамжийн бүтээгдэхүүнүүд. Дэлгэрэнгүй мэдээллийг авна уу WWW.datanumen.com

Одоо хуваалцах:

Тайлбарууд нь хаалттай байна.