有一些与在Access表单中使用combobox.recordset属性填充下拉框相关的文献可在expert's exchange和teck republic上获取。
这些控件通常通过控件的“rowsource”属性中的“SELECT *”字符串来填充,引用客户端应用程序中可用的表或查询。当我需要在下拉框中显示服务器端数据时,我会创建一个临时本地表并导入所请求的记录。这很耗时,特别是对于大型表格。
能够使用recordset填充combobox控件将允许用户直接显示来自服务器端的数据。
受前两个示例的启发,我编写了以下代码:
Dim rsPersonne as ADODB.recordset
Set rsPersonne = New ADODB.Recordset
Set rsPersonne.ActiveConnection = connexionActive
rsPersonne.CursorType = adOpenDynamic
rsPersonne.LockType = adLockPessimistic
rsPersonne.CursorLocation = adUseClient
rsPersonne.Open "SELECT id_Personne, nomPersonne FROM Tbl_Personne"
fc().Controls("id_Personne").Recordset = rsPersonne
在哪里:
- connexionActive:是我与数据库服务器的永久ADO连接
- fc():是我的当前/活动表单
- controls("id_Personne"):是要填充公司员工列表的组合框控件
- Access 2003版本
不幸的是,它不起作用!
在调试模式下,我可以检查记录集是否正确创建,请求的列和数据是否正确关联到组合框控件。不幸的是,当我显示表单时,我仍然得到一个空的组合框,其中没有记录!非常感谢任何帮助。
编辑:
这个记录集属性确实适用于特定的组合框对象,而不是标准控件对象,我几天前发现它时非常惊讶。 我已经尝试使用组合框的回调函数,或者使用组合框的“addItem”方法填充列表。所有这些都很耗时。