【发布时间】:2016-03-15 05:07:49
【问题描述】:
我正在尝试显示当前在我的 Access 数据库中的所有用户。我正在使用我在网上找到的 VBA 代码,并试图根据我的需要对其进行修改。我正在尝试获取所有可用用户并将其显示在名为“ListUsers”的表单上的列表框中。
代码能够输出到调试窗口,但我无法更新我的列表框。我收到以下错误:“运行时错误‘6014’:RowSourceType 属性必须设置为‘值列表’才能使用此方法。”我查看了该列表框的属性窗口,找不到与 RowSourceType 相关的任何内容。我在网上尝试了一些不同的建议,但我仍然无法更新列表框,所以我想看看这里是否有人可能有一些想法。我的代码在下面,我将 VBA 代码放在了按钮单击上。
Option Compare Database
Option Explicit
Private Sub cmd_Users_Click()
Dim cn As New ADODB.Connection
Dim rs As New ADODB.recordset
Dim i, j As Long
Set cn = CurrentProject.Connection
' The user roster is exposed as a provider-specific schema rowset
' in the Jet 4.0 OLE DB provider. You have to use a GUID to
' reference the schema, as provider-specific schemas are not
' listed in ADO's type library for schema rowsets
Set rs = cn.OpenSchema(adSchemaProviderSpecific, _
, "{947bb102-5d43-11d1-bdbf-00c04fb92675}")
'Output the list of all users in the current database.
Debug.Print rs.Fields(0).Name, "", rs.Fields(1).Name, _
"", rs.Fields(2).Name, rs.Fields(3).Name
While Not rs.EOF
Debug.Print rs.Fields(0), rs.Fields(1), _
rs.Fields(2), rs.Fields(3)
ListUsers.AddItem "'" & rs.Fields(0) & "-" & rs.Fields(1) & "'"
rs.MoveNext
Wend
End Sub
【问题讨论】:
-
此解决方案直接来自 Microsoft 支持文章 (support.microsoft.com/en-us/kb/285822),并且运行良好。请澄清您的实际问题/问题并提供与该问题相关的代码 sn-p。最好的问候,
-
关键词是“根据我的需要修改它”。我知道 Microsoft 的代码有效,但我想将信息输出到表单上的列表框中。你甚至读过这个问题吗? @AlexBell
-
您的问题的标题应该与您尝试解决的实际问题直接相关,这似乎与标题中所述以及您自己的答案中提到的问题不同(按钮点击事件在哪里和您发布的代码 sn-p 中的列表框?)。问候,
-
啊嘎嘎!下次我会澄清标题。按钮单击事件在表单上。我通过将 .RowSourceType = "Value List" 添加到我的 VBA 代码来解决了这个问题。
标签: ms-access vba ms-access-2010