03. april 2002 - 08:44Der er
8 kommentarer og 1 løsning
Trylle brugernavn frem
Kan Access på nogen måde genkende brugernavnet på den bruger der er logget ind på en NT arbejdsstation? Resultatet skulle gerne være at brugeren bliver genkendt når databasen åbnes og f.eks. kommer frem med en "velkommen Carsten"...
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _ "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Function GetUserName() As String ' Returns the network login name Dim lngLen As Long, lngX As Long Dim strUserName As String strUserName = String$(254, 0) lngLen = 255 lngX = apiGetUserName(strUserName, lngLen) If lngX <> 0 Then GetUserName = Left$(strUserName, lngLen - 1) Else GetUserName = "" End If End Function
Du kan kalde den fra en anden VBA-procedure eller du kan bruge den i en tekstboks eller en forespørgsel. Alle steder, hvor du normalt bruger forskellige udtryk. I en tekstboks kan du f.eks. skrive: =Getusername() Så vil brugerens navn altid stå i tekstboksen.
Hvis du vil lave en msgbox som skriver "velkommen Carsten", skal du lave en funktion i et modul, som f.eks. ser således ud:
Public Function Velkomst() msgbox "Velkommen " & Getusername() & "!", vbExclamation, "Velkommen!" end function
Denne funktion kan du så kalde fra en Makro (som du gemmer under navnet Autoexec). Makroens handling skal være "Afspil kode" og argumentet skal være: Velkomst()
Det virker næsten somom du brænder efter at forklare hvorfor den indbyggede funktion CurrentUser() returnerer administratorens brugernavn og ikke gør hvad den bør - returnere den nuværende brugers navn.
Bare en lille "rarity" til de sene sommeraftner :-)
Currentuser() returnere den aktuelle Bruger, som er logget på Access (dvs Admin eller Administrator, som er default-brugernavn i Access). Access brugenavne kan oprette via menuen Funktioner->Sikkerhed->Bruger- og Gruppekonti.
Min funktion (Getusername) returnere derimod Windows-brugernavnet.
I mellemtiden er jeg faktisk kommet i tanke om en væsentlig nemmere måde at finde dette windowsbrugernavn - nemlig ved at bruge, den i forvejen indbyggede funktion: Environ("Username")
Denne funktion er ikke særlig kendt og jeg har faktisk aldrig set den forslået til at finde windows-login (det er ellers et ofte tilbagevendende spørgsmål, som altid er blevet besvaret med den API-funktion, som jeg selv brugte i mit oprindelige svar)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.