2017-12-02 12 views
0

私はAccessにBAF_Userという名前の2つのフィールド(BAFUser、BRID)を持つuserformを持っています。変数フィールドでDLookup値を取得できません

次のコードを使用してWindowsユーザー名を取得し、DLookupを使用してそれを比較し、アクセスファイルにログインしているユーザーのフルネームを取得します。

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を使うこともできます。グローバル変数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

タックス@ June7、完璧に働いた。 –

+0

他のフォームでもこの値を取得する必要があります。フルコードを書き込む代わりに、別のフォームでこの関数を呼び出して値を取得する方法はありますか? –

+0

この関数は汎用モジュールに置くことができ、db内のどこからでも利用できます。機能と同じ名前をモジュールに与えないでください。私のアプリでは、メインメニューのフォームにユーザーの名前でテキストボックスを設定しました。フォームは決して閉じないので、関数を呼び出すのではなく、テキストボックスを参照するだけです。 – June7

関連する問題