我RecordsetClone.RecordCount
用来显示子表单中的记录数。
问题是,它只计算表单加载时适合子表单边界的那些;您需要向下滚动才能查看的子表单中的任何记录都不会被计算在内。
这是正常的行为RecordsetClone.RecordCount
吗?是否有另一种方法可以计算我的子表单中的所有记录,包括底部边框以下的记录?
没关系。发现为确保准确RecordCount
,您应该MoveLast
在执行RecordCount
. 下面的上下文和代码给任何有同样问题的人:
上下文:
我设计了一个搜索工具,使用主窗体来保存所有搜索过滤器(文本框)和“搜索”命令按钮。搜索结果显示在搜索过滤器下方的子表单上。我想用来RecordCount
将搜索中返回的数字结果传递到名为txtResultsNum的主表单上的文本框中。
我正在使用以下代码来实现这一点:
Dim ResultNum As String
ResultNum = Trim(Me.MySubForm.Form.RecordsetClone.RecordCount)
Me.txtResultNum.ControlSource = "=""("" & " & ResultNum & " &"")"""
不幸的是,这(至少对我而言)只会计入在用户必须向下滚动之前可以在子表单中显示的记录数,因此对所有记录的计数不准确。
要获得准确的计数MoveLast
,请在执行以下操作之前使用RecordCount
:
Dim ResultNum As String
Dim rs As Recordset
Set rs = Me.MySubForm.Form.Recordset
rs.MoveLast
ResultNum = rs.RecordCount
Me.txtResultNum.ControlSource = "=""("" & " & ResultNum & " &"")"""
rs.MoveFirst
Set rs = Nothing
注意我MoveFirst
最后也用过;这是因为“MoveLast”会自动将焦点移动到子表单中的最后一条记录,这不是我想要的(我希望用户看到第一条记录并向下工作)。