VBA-基于选择的不需要的Listcount表示形式更改

VBA-基于选择的不需要的Listcount表示形式更改,vba,ms-access,listbox,ms-access-2003,Vba,Ms Access,Listbox,Ms Access 2003,我正在使用Access 2003开发一个应用程序,用户可以在其中动态生成查询,然后使用GUI定义的查询结果浏览列表框。我允许列标题显示在结果中作为额外行的计数 返回的行数受listbox的物理限制65535限制。我还有一个列表框,在文本框中显示所选Y的X行 每次用户单击列表框时都会生成该消息,事件处理程序中的代码为: 我!txtRowCount.Value=“行”&(Me!listDynamicSearchResult.ListIndex+1)&_ “&(Me!listDynamicSearch

我正在使用Access 2003开发一个应用程序,用户可以在其中动态生成查询,然后使用GUI定义的查询结果浏览列表框。我允许列标题显示在结果中作为额外行的计数

返回的行数受listbox的物理限制65535限制。我还有一个列表框,在文本框中显示所选Y的X行

每次用户单击列表框时都会生成该消息,事件处理程序中的代码为:

我!txtRowCount.Value=“行”&(Me!listDynamicSearchResult.ListIndex+1)&_ “&(Me!listDynamicSearchResult.ListCount-1)&”已选择“的”

通常代码会显示选中的65534的第X行,因为我选择不计算列表框中的标题。当用户接近最大值时,Y值65534将更改为65535,并保持在该最大值,直到我重新查询或清除表单


那么,为什么listcount属性在接近最大值之前不显示适当的值呢?

该行为可能与记录集和记录集内计数的情况类似

Before we get into the examples, you need to understand how RecordCount works. 
It does not tell you the number of records in a recordset. Rather, it tells you
the count of records accessed in the Recordset. They may or may not be the same
thing. 
资料来源:


一种解决方法可能是使用
DCount
,但我猜在64k行上调用它可能会很昂贵

此外,实际的listcount值从65535变为65536。我认为您的解决方案会给出准确的结果,但每个选择上的聚合函数似乎都是一场噩梦。在一天结束的时候,它只差一点,我只是好奇它为什么这么做。我没有找到更好的,所以我选择这个作为答案。