适用于 :Access 2013、Office 2013

返回在 Recordset 对象中访问的记录数,或表类型 Recordset 对象中的记录总数。 或 TableDef 对象。 只读 Long

表达式 .RecordCount

表达式 一个表示 Recordset 对象的变量。

使用 RecordCount 属性可以找出 Recordset TableDef 对象中已访问的记录数。 在访问完所有记录之前, RecordCount 属性不指示动态集类型、快照类型或仅向前类型的 Recordset 对象中包含的记录数。 访问完最后一条记录后, RecordCount 属性将指示 Recordset TableDef 对象中未删除的记录总数。 若要强制访问最后一条记录,请对 Recordset 对象使用 MoveLast 方法。 还可以使用 SQL Count 函数来确定查询将返回的大致记录数。

[!注释] 使用 MoveLast 方法填充新打开的 Recordset 会对性能造成负面影响。 除非在您打开 Recordset 时必须得到准确的 RecordCount ,否则最好等到使用代码的其他部分填充完 Recordset 之后,再检查 RecordCount 属性。

由于应用程序删除了动态集类型 Recordset 对象中的记录,因此 RecordCount 属性的值将减小。 但是,其他用户删除的记录不受 RecordCount 属性的影响,除非当前记录定位到已删除的记录。 如果执行的事务影响 RecordCount 属性设置,之后您又回滚了该事务,则 RecordCount 属性将不会反映其余记录的实际数目。

快照类型或仅向前类型 Recordset 对象的 RecordCount 属性不受基础表中的更改的影响。

如果 Recordset TableDef 对象不含记录,则其 RecordCount 属性设置为 0。

Recordset 对象使用 Requery 方法将会重置 RecordCount 属性,如同重新执行查询一样。

以下示例演示填充不同类型的 Recordsets 之前和之后的 RecordCount 属性。

    Sub RecordCountX() 
     Dim dbsNorthwind As Database 
     Dim rstEmployees As Recordset 
     Set dbsNorthwind = OpenDatabase("Northwind.mdb") 
     With dbsNorthwind 
     ' Open table-type Recordset and show RecordCount 
     ' property. 
     Set rstEmployees = .OpenRecordset("Employees") 
     Debug.Print _ 
     "Table-type recordset from Employees table" 
     Debug.Print " RecordCount = " & _ 
     rstEmployees.RecordCount 
     rstEmployees.Close 
     ' Open dynaset-type Recordset and show RecordCount 
     ' property before populating the Recordset. 
     Set rstEmployees = .OpenRecordset("Employees", _ 
     dbOpenDynaset) 
     Debug.Print "Dynaset-type recordset " & _ 
     "from Employees table before MoveLast" 
     Debug.Print " RecordCount = " & _ 
     rstEmployees.RecordCount 
     ' Show the RecordCount property after populating the 
     ' Recordset. 
     rstEmployees.MoveLast 
     Debug.Print "Dynaset-type recordset " & _ 
     "from Employees table after MoveLast" 
     Debug.Print " RecordCount = " & _ 
     rstEmployees.RecordCount 
     rstEmployees.Close 
     ' Open snapshot-type Recordset and show RecordCount 
     ' property before populating the Recordset. 
     Set rstEmployees = .OpenRecordset("Employees", _ 
     dbOpenSnapshot) 
     Debug.Print "Snapshot-type recordset " & _ 
     "from Employees table before MoveLast" 
     Debug.Print " RecordCount = " & _ 
     rstEmployees.RecordCount 
     ' Show the RecordCount property after populating the 
     ' Recordset. 
     rstEmployees.MoveLast 
     Debug.Print "Snapshot-type recordset " & _ 
     "from Employees table after MoveLast" 
     Debug.Print " RecordCount = " & _ 
     rstEmployees.RecordCount 
     rstEmployees.Close 
     ' Open forward-only-type Recordset and show 
     ' RecordCount property before populating the 
     ' Recordset. 
     Set rstEmployees = .OpenRecordset("Employees", _ 
     dbOpenForwardOnly) 
     Debug.Print "Forward-only-type recordset " & _ 
     "from Employees table before MoveLast" 
     Debug.Print " RecordCount = " & _ 
     rstEmployees.RecordCount 
     ' Show the RecordCount property after calling the 
     ' MoveNext method. 
     rstEmployees.MoveNext 
     Debug.Print "Forward-only-type recordset " & _ 
     "from Employees table after MoveNext" 
     Debug.Print " RecordCount = " & _ 
     rstEmployees.RecordCount 
     rstEmployees.Close 
     .Close 
     End With 
    End Sub