2017-12-02 306 views
0

我有一個名爲BAF_User與2個字段(BAFUser,BRID)在Access中的用戶窗體。無法獲得DLookup值與變量字段

我使用下面的代碼來獲取Windows用戶名,然後使用DLookup進行比較,並獲取登錄到Access文件的用戶的全名。

Option Compare Database 

Public Function GetUserName() As String 
Dim wshNet As Object 
Dim As String 
Set wshNet = CreateObject("WScript.Network") 
GetUserName = wshNet.UserName 
Set wshNet = Nothing 
MyName = DLookup("[BAFUser]", "BAF_User", "[BRID] = '" & GetUserName & " '") 
End Function 

Private Sub Form_Load() 
MsgBox "Welcome" + MyName 
End Sub 

但是這沒有顯示價值,我無法捕捉到我做錯了什麼。

感謝您的幫助。

+0

請注意,您有相關的空間在這裏:'& 「「」)'。這意味着你的查詢只會返回匹配的用戶名+尾部空格。 –

+0

謝謝,我已經刪除了它仍然沒有工作的空間 'MyName = DLookup(「[BAFUser]」,「BAF_User」,「[BRID] ='」&GetUserName&「'」)' –

+0

如果您打算設置一個全局變量,也可以使用Sub而不是Function。你在哪裏聲明全局變量MyName?你有一個沒有變量命名的Dim語句。這甚至不應該編譯。 – June7

回答

0

爲什麼使用全局變量?只需調用該函數並讓它返回值。

Public Function GetUserName() As String 
Dim wshNet As Object 
Set wshNet = CreateObject("WScript.Network") 
GetUserName = DLookup("[BAFUser]", "BAF_User", "[BRID] = '" & wshNet.UserName & "'") 
Set wshNet = Nothing 
End Function 

Private Sub Form_Load() 
MsgBox "Welcome " & GetUserName 
End 

一種替代方案:
MsgBox "Welcome " & DLookup("[BAFUser]", "BAF_User", "[BRID] = '" & Environ("USERNAME") & "'"

+0

Thaks @ June7,工作完美無瑕。 –

+0

我需要在我的其他表單中獲取此值,有沒有辦法以其他形式調用此函數來獲取價值,而不是寫出完整的代碼? –

+0

該函數可以放置在一個通用模塊中,然後它可以從db中的任何地方使用。不要給該模塊使用與函數相同的名稱。在我的應用程序中,我使用用戶名在主菜單窗體上設置了一個文本框。窗體永遠不會關閉,所以不用調用函數,而只是引用文本框。 – June7