gpt4 book ai didi

ms-access - 如何使用 VBA 用 Recordset 填充 ComboBox

转载 作者:行者123 更新时间:2023-12-04 05:44:36 25 4
gpt4 key购买 nike

expert's exchange 上可以找到一些文献。并在 teck republic关于使用 combobox.recordset 属性在 Access 表单中填充组合框。

这些控件通常在控件的“rowsource”属性中填充“SELECT *”字符串,引用应用程序客户端上可用的表或查询。当我需要在组合框中显示服务器端数据时,我创建一个临时本地表并导入请求的记录。这很耗时,特别是对于大 table 。

能够使用记录集来填充组合框控件将允许用户直接从服务器端显示数据。

受前两个例子的启发,我写了一些代码如下:

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():是我当前/事件的形式
  • 控件(“id_Personne”):是
    要填充的组合框控件
    公司员工名单
  • 2003年接入版

  • 不幸的是,它不起作用!

    在 Debug模式下,我能够检查记录集是否已正确创建、具有请求的列和数据,以及是否与组合框控件正确关联。不幸的是,当我显示表单时,我总是得到一个空的组合框,里面没有任何记录!任何帮助都受到高度赞赏。

    编辑:

    这个记录集属性确实对特定的组合框对象可用,而不是对标准控件对象可用,几天前我很惊讶地发现它。
    我已经尝试使用组合框的回调函数,或者使用组合框的“addItem”方法填充列表。所有这些都非常耗时。

    最佳答案

    如前所述,为了在组合框中显示查询结果,您必须将 RowSourceType 设置为“Table/List”(或“Table/Requête”,如果是法语)。

    您的内存问题是由于打开记录集 (rsPersonne) 而不关闭它而引起的。您应该在关闭/卸载表单时关闭它们(但由于记录集是在函数中声明的,而不是在表单中声明的​​,因此您会再次遇到范围问题)。

    您还可以尝试使用 Access 的内置查询创建器创建和保存查询,并将相同的查询插入到组合框的 RowSource 中。这样查询在 Access 中得到验证和编译。

    关于ms-access - 如何使用 VBA 用 Recordset 填充 ComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/967399/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com