Usernamen mit dem man in Windows angemeldet ist in Access übernehmen
Hallo,
wir sind hier dabei eine Access Datenbank zu bauen in der Serverausfälle gelistet werden sollen. Nun sollte in einem Feld in einer Tabelle automatisch die UserID eintragetragen werden, mit der man in Windows angemeldet ist (also der Username von Windows).
Am besten sollte er in ein Textfeld in einem Formular übernommen werden.
Habt ihr ne Ahnung wie man das macht?
Danke und viele Grüße,
Michael Steib
wir sind hier dabei eine Access Datenbank zu bauen in der Serverausfälle gelistet werden sollen. Nun sollte in einem Feld in einer Tabelle automatisch die UserID eintragetragen werden, mit der man in Windows angemeldet ist (also der Username von Windows).
Am besten sollte er in ein Textfeld in einem Formular übernommen werden.
Habt ihr ne Ahnung wie man das macht?
Danke und viele Grüße,
Michael Steib
Please also mark the comments that contributed to the solution of the article
Content-ID: 33929
Url: https://administrator.de/contentid/33929
Printed on: November 10, 2024 at 19:11 o'clock
4 Comments
Latest comment
Folgende Funktion liefert den Windows-Benutzernamen:
Function fOSUserName() As String
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
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = ""
End If
End Function
Wenn z.B. der Benutzername bei jeder Datensatzänderung in der Tabelle eingetragen werden soll, geht das so:
1) Ein Modul mit der obigen Funktion erstelle.
2) In der Tabelle ein Textfeld einfügen, z.B. BenutzerAenderung
3) Im Formular ein Textfeld erstellen, z.B. BenutzerAenderung
4) Im Formular beim Ereignis ?Nach Aktualisierung:
Private Sub Form_AfterUpdate()
With Me.RecordsetClone
.Bookmark = Me.Bookmark
.Edit
!BenutzerAenderung = fOSUserName
.Update
End With
End Sub
mfg
Function fOSUserName() As String
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
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = ""
End If
End Function
Wenn z.B. der Benutzername bei jeder Datensatzänderung in der Tabelle eingetragen werden soll, geht das so:
1) Ein Modul mit der obigen Funktion erstelle.
2) In der Tabelle ein Textfeld einfügen, z.B. BenutzerAenderung
3) Im Formular ein Textfeld erstellen, z.B. BenutzerAenderung
4) Im Formular beim Ereignis ?Nach Aktualisierung:
Private Sub Form_AfterUpdate()
With Me.RecordsetClone
.Bookmark = Me.Bookmark
.Edit
!BenutzerAenderung = fOSUserName
.Update
End With
End Sub
mfg
Sorry, im Modul vor der Funktion noch folgenden Code einfügen:
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Und vorsichtshalber noch die Verweise prüfen:
Modul im Entwurf öffnen, Extras > Verweise
Da sollten 4 Einträge sein:
Visual Basic for Applications
Microsoft Access x.0 Object Library
Microsoft DAO 3.6 Object Library
Microsoft ActiveX Data Objects 2.x Library
mfg
Private Declare Function apiGetUserName Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Und vorsichtshalber noch die Verweise prüfen:
Modul im Entwurf öffnen, Extras > Verweise
Da sollten 4 Einträge sein:
Visual Basic for Applications
Microsoft Access x.0 Object Library
Microsoft DAO 3.6 Object Library
Microsoft ActiveX Data Objects 2.x Library
mfg
...ist kaum nötig, mit solchen Kanonen auf den kleinen Spatz zu schießen..
Ermittelt einfach den Usernamen aus dem Environment.
strUsername = Environ("USERNAME")
Die Funktion Environ()/Environ$() ist in der "normalen" VBA-Bibliothek, die ohnehin mit eingebunden (bzw. auf jeden Fall vorhanden) ist.
Gruß
Biber
Ermittelt einfach den Usernamen aus dem Environment.
strUsername = Environ("USERNAME")
Die Funktion Environ()/Environ$() ist in der "normalen" VBA-Bibliothek, die ohnehin mit eingebunden (bzw. auf jeden Fall vorhanden) ist.
Gruß
Biber