搜索此网站和其他网站但无法找到答案,说明在从记录集添加项目时,为什么我没有看到列表框的正确列表计数。 由于列表框中的列标题或65,534物理限制,大多数其他线程都会关注计数关闭。 我看到了一些不同的东西
使用链接的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
答案 0 :(得分:2)
由于您使用的是AddItem
方法,这意味着您的列表框的行源类型属性必须是“值列表”。这意味着Record Source属性是一个包含该值列表的字符串。并且可以包含在值列表中的字符数有限制。虽然我不记得该限制的数量,但我怀疑这是你的价值表没有包含你期望的所有价值的原因。
但是有一种更简单的方法来加载列表框值。您有一个查询 strSQL ,为其打开一个记录集,然后遍历记录集,将每行中的2个字段值添加到值列表中。
直接使用SQL语句...不将记录集作为中介。
这种方法不那么大惊小怪,并且避免了值列表字符限制。然后,您只需要确定1K或更多行是否真的适合列表框。 : - )