【问题标题】:Listbox.Listcount not accurateListbox.Listcount 不准确
【发布时间】:2013-09-22 07:06:28
【问题描述】:

搜索了这个网站和其他网站,但找不到关于为什么在从记录集中添加项目时我没有看到正确的列表框列表计数的答案。 由于列表框上的列标题或 65,534 个物理限制,大多数其他线程要么关注计数减少 1。 我看到了一些不同的东西

使用链接的 SQL Server 2008 表运行 Access 2010。

代码:

lstSearchResults.RowSource = ""
lstSearchResults.AddItem ("Material Number;Description")
Set rsParts = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)

If rsParts.RecordCount > 0 Then
    rsParts.MoveLast
    rsParts.MoveFirst
    lngCount = 0
    Do While Not rsParts.EOF
        lngCount = lngCount + 1
        lstSearchResults.AddItem (rsParts.Fields("MaterialNumber") & ";" & rsParts.Fields("Description"))
        rsParts.MoveNext
    Loop
End If

在循环之后放置断点,我检查了以下值:

lstSearchResults.ListCount - 1012
rsParts.RecordCount - 5255
lngCount - 5255

【问题讨论】:

    标签: ms-access listbox vba ms-access-2010


    【解决方案1】:

    由于您使用的是AddItem 方法,这意味着您的列表框的行源类型属性必须是“值列表”。这意味着 Record Source 属性是一个包含该值列表的字符串。并且值列表中可以包含的字符数是有限制的。虽然我不记得该限制的数量,但我怀疑这就是您的值列表未包含您期望的所有值的原因。

    但是有一种更简单的方法来加载列表框值。您有一个查询 strSQL,您为此打开一个记录集,然后遍历记录集以将每行中的 2 个字段值添加到值列表中。

    直接使用 SQL 语句...没有记录集作为中介。

    1. 将列表框的行源类型更改为“表/查询”。
    2. 使用 SQL 语句作为列表框的 Row Source 属性。

    这种方法不太麻烦,并且避免了值列表字符限制。然后您只需要确定 1K 或更多行是否真的适合列表框。 :-)

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 2013-09-21
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多