Свойство Recordset.RecordCount (DAO)
Область применения: Access 2013, Office 2013
Возвращает число записей, доступных в объекте Recordset, или общее количество записей в Recordset табличного типа. или объекте TableDef. Только для чтения, Long.
Синтаксис
выражение .RecordCount
выражение: переменная, представляющая объект Recordset.
Примечания
Используйте свойство RecordCount, чтобы узнать, ко скольким записям в объекте Recordset или TableDef получен доступ. Свойство RecordCount не указывает, сколько записей содержится в объекте Recordset типа "Динамический набор", "Статический набор" или однонаправленного типа, пока не будет получен доступ ко всем записям. После получения доступа к последней записи свойство RecordCount указывает общее число неудаленных записей в объекте Recordset или TableDef. Чтобы принудительно получить доступ к последней записи, используйте метод MoveLast объекта Recordset. Вы также можете использовать функцию SQL Count, чтобы определить приблизительное число записей, возвращаемых запросом.
Примечание.
Использование метода MoveLast для заполнения только что открытого объекта Recordset негативно влияет на производительность. Если не нужно получать точное значение RecordCount сразу при открытии объекта Recordset, лучше подождать заполнения объекта Recordset другими фрагментами кода, прежде чем проверять свойство RecordCount.
Когда приложение удаляет записи в объекте Recordset типа "Статический набор", значение свойства RecordCount уменьшается. Однако записи, удаленные другими пользователями, не отображаются в свойстве RecordCount, пока текущая запись расположена в удаленной записи. Если выполняется транзакция, влияющая на значение свойства RecordCount, с последующей отменой транзакции, свойство RecordCount не будет отражать фактическое количество оставшихся записей.
Свойство RecordCount объекта Recordset типа "Динамический набор" или "Статический набор" не затрагивается изменениями в базовых таблицах.
У объекта Recordset или TableDef без записей свойству RecordCount соответствует значение 0.
Использование метода Requery для объекта Recordset сбрасывает свойство RecordCount, как при повторном выполнении запроса.
Пример
В этом примере показано свойство RecordCount с разными типами объектов Recordset до и после их заполнения.
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