RecordsetClone.RecordCount仅计算可见的记录 - 不是您可以滚动到的记录

时间:2013-11-14 16:52:41

标签: ms-access access-vba

我正在使用RecordsetClone.RecordCount来显示子表单中的记录数。

问题是,它只计算表单加载时适合子表单边框内的那些;您需要向下滚动查看的子表单中的任何记录都不计算在内。

这是RecordsetClone.RecordCount的正常行为吗?是否有另一种方法可以计算子表单中的所有记录,包括底部边界以下的记录?

1 个答案:

答案 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`会自动将焦点移动到子窗体中的最后一条记录,这不是我想要的(我更希望用户看到第一条记录并向下工作)。