如何统计记录及其数值

时间:2015-05-20 03:55:37

标签: access-vba ms-access-2010

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

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

2 个答案:

答案 0 :(得分:1)

在我的表格上,我放了一个标签并称之为lblRecords:

在Form的当前事件中,使用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

如果表单绑定到只显示表中一小部分记录的查询,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

答案 1 :(得分:0)

除了使用DCount功能之外,以下是使用名为' etcRecordNumber'的标签的最佳解决方案。 :

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

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