Avatar billede 3xa Nybegynder
03. april 2002 - 08:44 Der 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"...
03. april 2002 - 08:46 #1
Put denne kode i et modul:

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
03. april 2002 - 08:46 #2
Herefter kan du fange navnet ved at kalde:
GetUserName()
Avatar billede 3xa Nybegynder
03. april 2002 - 08:50 #3
GetUsername()? Hvordan kalder jeg den?
03. april 2002 - 08:57 #4
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()
Avatar billede 3xa Nybegynder
03. april 2002 - 08:59 #5
Så siger jeg mange tak for hjælpen....
03. april 2002 - 09:01 #6
anytime :o)
Avatar billede weinreich Nybegynder
03. april 2002 - 12:18 #7
ok det her er lige noget jeg kan bruge :-) Jeg takker også lige hehe
Avatar billede Jens Jakob Teislev Nybegynder
08. april 2002 - 08:56 #8
Hej Thomas!

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 :-)

jakslev
08. april 2002 - 11:25 #9
Hej Jens ;o)

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)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester