对于本技巧,我们将向您展示一个非常方便的多用户Jet功能,该功能使您可以更有效地管理用户。 您可以在ADO中创建一个特殊的,提供程序特定的记录集,该记录集提供有关数据库中当前用户的信息。 这是通过使用连接对象的OpenSchema()方法完成的,该方法将用各种不同的数据库模式信息集填充记录集。 该OpenSchema()方法的输出将被写入具有预定义标题Computer,UserName,Connected?和Suspect?的列表框(lstUsers)。
我有意决定在此特定时间点显示此提示,因为它与先前的提示密切相关,
被动关机 。 它们都是Jet 4公开的非常有用的多用户功能,它们将极大地帮助执行某些管理任务,例如:更新,备份等。多用户数据库,将希望100%确保当前没有用户登录到您的后端数据库。 通过使用“ 被动关机” ,当不允许其他用户登录,并且“用户列表”将显示所有当前登录的用户时,您将100%保证当前登录的任何个人都不会干扰关键过程。 。下面的代码段将演示如何在窗体的列表框中显示此用户列表。 整个代码中散布着很多注释,但是如果您需要在任何特定领域进行进一步的解释,请随时提出。
'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?"
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
输出:
Computer UserName Connected? Suspect?
DEZII Admin True
IGUANA Suzanne True
LIZARD Paul True
FINANCE Leonard True
From: https://bytes.com/topic/access/insights/684989-how-generate-user-list