我正在使用RecordsetClone.RecordCount
来显示子表单中的记录数。
问题是,它只计算表单加载时适合子表单边框内的那些;您需要向下滚动查看的子表单中的任何记录都不计算在内。
这是RecordsetClone.RecordCount
的正常行为吗?是否有另一种方法可以计算子表单中的所有记录,包括底部边界以下的记录?
答案 0 :(得分:1)
没关系。我们发现,为了确保准确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`会自动将焦点移动到子窗体中的最后一条记录,这不是我想要的(我更希望用户看到第一条记录并向下工作)。