Option Compare Database 'Use database order for string comparisons
Option Explicit
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Function GetUserID() As String
On Error GoTo GetUserID_Error
'returns the Username of the currently logged in user
Dim strUserName As String * 100
Dim pLen As Long
Dim RetVal As Long
pLen = Len(strUserName)
RetVal = GetUserName(strUserName, pLen)
pLen = InStr(strUserName, Chr$(0)) - 1
GetUserID = Left$(strUserName, pLen)
GetUserID_Exit:
On Error Resume Next
DBEngine.Idle dbFreeLocks
DBEngine.Idle dbRefreshCache
Exit Function
GetUserID_Error:
Dim DisplayMessage As String
DisplayMessage = Nz(Choose(Application.CurrentObjectType, "Query", "Form", "Report", "Macro", "Module"), "Host")
DisplayMessage = DisplayMessage & vbTab & ": " & Application.CurrentObjectName & vbNewLine
DisplayMessage = DisplayMessage & "Event" & vbTab & ": GetUserID" & vbNewLine
DisplayMessage = DisplayMessage & "Error" & vbTab & ": " & Err & vbNewLine
DisplayMessage = DisplayMessage & "Text" & vbTab & ": " & Error$ & vbNewLine
DisplayMessage = DisplayMessage & vbNewLine & "If this error persists please note down these details together with what you were trying to do and call for technical assistance."
MsgBox DisplayMessage, vbCritical + vbOKOnly, "An error has occured in "
GetUserID = "ErrorInGetUserName"
Resume GetUserID_Exit
End Function