2017-12-02 305 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