如何统计记录及其数值

How to count records and it's numerical value

我正在寻找对基础 table(或查询)中的记录进行计数并允许在活动表单上捕获该数字的最佳方法。简而言之,我想在我的表单上创建一个对象,告诉用户他当前正在查看的记录中有多少(例如,这是 6 条记录中的第 3 条记录)

我知道如何使用记录计数功能,但很难将该数字传输到我表单上的对象。

在我的表单上,我放置了一个标签并将其命名为 lblRecords:

在Form的Current事件中,Form的CurrentRecord获取当前记录号。虽然下面使用了DCount,但请通读http://www.fontstuff.com/mailbag/qaccess04.htm,以获取比DCount更好的示例来计算记录数。

Private Sub Form_Current()
    Me.lblRecords.Caption = "Record " & Me.CurrentRecord & " of " & DCount("ID", "Table1")
End Sub

使用ADODB,也可以获得记录数

编辑

要获取绑定到表单的数据源的记录数,可以这样做:

Private Sub Form_Current()
    Me.lblRecords.Caption = "Record " & Me.CurrentRecord & " of " & RecordCount()
End Sub


Function RecordCount() As Integer

On Error GoTo ErrorHandler
    Dim RecordsClone As Object

    Set RecordsClone = Me.RecordsetClone
    RecordsClone.MoveLast
    RecordCount = RecordsClone.RecordCount
    Exit Function

ErrorHandler:
    RecordCount = "NA"

End Function

如果表单绑定到仅显示 table 中一小部分记录的查询,Function RecordCount() 将显示正确的记录数信息。

但是如果使用 VBA 动态更改表单的数据源怎么办?上述功能仍然可以正常工作。这是一个如何动态更改表单数据源的示例。

Public Sub ChangeFormQuery()
    Form_Form1.RecordSource = "select * from table1 where [id] between 3 and 4"
    Form_Form1.Requery
    Form_Form1.Refresh
End Sub

除了使用 DCount 函数,以下是使用名为 'etcRecordNumber' 的标签的最佳解决方案:

RC = Form_frmStaticDataSkills03.Recordset.RecordCount
RN = Form_frmStaticDataSkills03.CurrentRecord

Me.etcRecordNumber.Caption = "This is record " & RN & " of " & RC