2016-11-29 33 views
0

私は現在、Accessデータベースにログインしているユーザーを表示するためにコードを使用しています。これは、バックエンドと複数のフロントエンドを持つ分割データベースです。この作品MS Access現在のユーザーにユーザー名が表示されていない

Private Sub btnShowUsers_Click() 
'The User List Schema information requires this magic number. For anyone 
'who may be interested, this number is called a GUID or Globally Unique 
'Identifier - sorry for digressing 
Const conUsers = "{947bb102-5d43-11d1-bdbf-00c04fb92675}" 

Dim cnn As ADODB.Connection, fld As ADODB.Field, strUser As String 
Dim rst As ADODB.Recordset, intUser As Integer, varValue As Variant 

Set cnn = CurrentProject.Connection 
Set rst = cnn.OpenSchema(Schema:=adSchemaProviderSpecific, SchemaID:=conUsers) 

'Set List Box Heading 
strUser = "Computer;UserName;Connected?;Suspect?" 
Debug.Print rst.GetString 

With rst 'fills Recordset (rst) with User List data 
    Do Until .EOF 
    intUser = intUser + 1 
     For Each fld In .Fields 
     varValue = fld.Value 
      'Some of the return values are Null-Terminated Strings, if 
      'so strip them off 
      If InStr(varValue, vbNullChar) > 0 Then 
      varValue = Left(varValue, InStr(varValue, vbNullChar) - 1) 
      End If 
      strUser = strUser & ";" & varValue 
     Next 
     .MoveNext 
    Loop 
End With 

Me!txtTotalNumOfUsers = intUser  'Total # of Users 

'Set up List Box Parameters 
Me!lstUsers.ColumnCount = 4 
Me!lstUsers.RowSourceType = "Value List" 
Me!lstUsers.ColumnHeads = False 
    lstUsers.RowSource = strUser  'populate the List Box 

'Routine cleanup chores 
Set fld = Nothing 
Set rst = Nothing 
Set cnn = Nothing 

End Sub 

、それは現在のシステムを使用して、ユーザーのラップトップの数字を返しますが、「ユーザー名」欄に、それは単に「ADMIN」を言う:私は現在、このコードを使用しています。これにWindowsのユーザー名、つまりVBA.Environ( "USERNAME")を表示する方法はありますか?

+0

申し訳ありません - 以前の草案からのものである必要があります。タイトルが更新されました。 – TCassa

答えて

0

いいえ、これはできません。

この列には、Application.CurrentUser()メソッドと同じAccessユーザー名が表示されます。

あなたはユーザーレベルのセキュリティを設定しない限り、ワークグループファイルへのすべてのユーザーを追加し、

/User %username% 

のようなコマンドラインパラメータを使用してAccessを起動、ユーザー名は、常に「管理者」になります。

関連する問題