Қазіргі уақытта дерекқорды VBA арқылы пайдаланатын адамның пайдаланушы атын қалай алуға болады

Қазір бөлісу:

Сіздің бизнесіңізде белгілі бір жазбаны кім қосқанын білуіңіз керек пе? Немесе оны соңғы рет кім жаңартты? Бұл өте кең таралған талап, бірақ, өкінішке орай, Microsoft Access функционалдылығына сәйкес емес. Тек кестеге «соңғы жаңартылған» өрісін қосу (көп жағдайда) m-ге жету үшін жеткілікті болуы мүмкінost қажет, бірақ 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 файлындағы сыртқы функцияға сілтеме жасап жатқаныңызды көресіз. Мұны біз dll-де бар жалпы функция үшін жергілікті атауды (GetUser) жариялау арқылы жасаймыз (бұл жағдайда WNetGetUserA). - функцияны шақыру үшін қандай параметрлер қажет екенін де анықтаймыз - бұл жағдайда «Аты», «Пайдаланушы аты» және «Ұзындығы» параметрлері. Мұнда бізді қызықтыратын жалғыз нәрсе - «UserName», бірақ қалғаны да жеткізілуі керек, сондықтан функция dll ішінде қалай орнатылады.

Енді аяқталды, біз өз функциямызды құрамыз, сол арқылы біз осы сыртқы функцияға қоңырау шаламыз. Біздің функцияның коды өте аз, бірақ негізгі элементтерді қарастырайық:

  1.  «UserName = Space (255)» - егер сіз отладчиктегі код арқылы жүрсеңіз, онда сіз «GetUser ()» функциясы шақырылған кезде, біз оған берілетін «UserName» айнымалысының қайта жазылатынын көресіз. Ол үшін айнымалыға мәліметтер сақталуы үшін жеткілікті жад қажет, сондықтан біз айнымалыға 255 бос орын белгілерін бөлеміз, өйткені бұл m үшін жеткіліксіз болуы керекost (егер бәрі болмаса) пайдаланушы атаулары.
  2. Біз қайтару мәнін «returnStatus» айнымалысындағы функционалдық шақырудан аламыз. Мұндағы нөл (0) қоңырау сәтті болғанын білдіреді, ал басқасы қате болғанын білдіреді.
  3.  Сонымен, «UserName» айнымалысын ретке келтіру керек, себебі ол нөлдік белгілермен толтырылады, сондықтан Chr (0) табылғанға дейін айнымалыдағы белгілерді бөліп аламыз.

Қараңыз - енді бұл жаман болған жоқ! Ал енді, ең болмағанда, сізбен күресу керек болса mdb дерекқорының бүлінуі, сіз дерекқорды соңғы рет кім қолданғанын білесіз, сондықтан кімді кінәлай аласыз! (Мен мұнда әрине әзілдесемін!)

Автордың кіріспесі:

Митчелл Понд - деректерді қалпына келтіру бойынша сарапшы DataNumen, Соның ішінде деректерді қалпына келтіру технологиялары бойынша әлемдік көшбасшы болып табылатын Inc. жөндеу SQL Server проблема және excel қалпына келтіру бағдарламалық жасақтама өнімдері. Қосымша ақпарат алу үшін кіріңіз WWW.datanumen.com

Қазір бөлісу:

Пікірлер жабылды.