Шаг 104 - Свойство RecordCount

Описание
Возвращает число записей, к которым был осуществлен доступ в объекте Recordset, или полное число записей в табличном объекте Recordset или объекте TableDef.

Значение
Возвращаемое значение имеет тип Long.

Замечания
Свойство RecordCount используется для определения числа записей объекта Recordset или TableDef, к которым проводилось обращение. Свойство RecordCount не показывает, сколько записей содержится в динамическом или статическом объекте Recordset до обращения ко всем записям. После обращения к последней записи набора значение свойства RecordCount становится равным полному числу неудаленных записей в объекте Recordset или TableDef. Для принудительного обращения к последней записи следует вызвать для объекта Recordset метод MoveLast. Кроме того, определить примерное число записей, которые будут возвращены в запросе, позволяет функция Count языка SQL.
Заполнение с помощью метода MoveLast объекта Recordset при его открытии отрицательно сказывается на быстродействии. Если точное определение значения свойства RecordCount не требуется сразу после открытия объекта Recordset, рекомендуется подождать, пока объект Recordset будет заполнен в результате выполнения остальной программа, а уже потом обращаться к свойству RecordCount.
По мере удаления записей из динамического набора в процессе работы приложения значение свойства RecordCount уменьшается. Однако удаление записей другими пользователями не отражается на значении данного свойства до тех пор, пока указатель текущей записи не будет установлен на одну из удаленных записей. Если выполняется транзакция, изменяющая значение свойства RecordCount, а затем эта транзакция свертывается, значение свойства RecordCount не будет отражать реальное число оставшихся записей.
Изменения, вносимые в базовые таблицы, не влияют на значение свойства RecordCount объекта Recordset типа статического набора записей или статического набора записей с последовательным доступом.
Для объектов Recordset или TableDef, не содержащих записей, свойство RecordCount всегда имеет значение 0.
Для присоединенных объектов TableDef свойство RecordCount всегда имеет значение –1.
При вызове метода Requery для объекта Recordset значение свойства RecordCount изменяется так же, как и при повторном выполнении запроса.

Пример
Следующая программа демонстрирует применение свойства RecordCount для различных типов объектов Recordsets до и после их заполнения.

Sub RecordCountX()

	Dim dbsNorthwind As Database
	Dim rstEmployees As Recordset

	Set dbsNorthwind = OpenDatabase("Борей.mdb")

	With dbsNorthwind
		' Открывает табличный объект Recordset и отображает 
		' свойство RecordCount.
		Set rstEmployees = .OpenRecordset("Сотрудники")
		Debug.Print "Табличный набор записей для таблицы 'Сотрудники'"
		Debug.Print "    RecordCount = " & rstEmployees.RecordCount
		rstEmployees.Close
		' Открывает динамический объект Recordset и отображает 
		' свойство RecordCount до заполнения набора записей.
		Set rstEmployees = .OpenRecordset("Сотрудники", dbOpenDynaset)
		Debug.Print "Динамический набор записей " &  "для таблицы 'Сотрудники' до вызова MoveLast"
		Debug.Print "    RecordCount = " & rstEmployees.RecordCount
		' Отображает свойство RecordCount после заполнения набора
		' записей.
		rstEmployees.MoveLast
		Debug.Print "Динамический набор записей " & 	"для таблицы 'Сотрудники' после вызова MoveLast"
		Debug.Print "    RecordCount = " & rstEmployees.RecordCount
		rstEmployees.Close

		' Открывает статический объект Recordset и отображает 
		' свойство RecordCount до заполнения набора записей.
		Set rstEmployees = .OpenRecordset("Сотрудники", dbOpenSnapshot)
		Debug.Print "Статический набор записей " & "для таблицы 'Сотрудники' до вызова MoveLast"
		Debug.Print "    RecordCount = " & rstEmployees.RecordCount
		' Отображает свойство RecordCount после заполнения набора
		' записей.
		rstEmployees.MoveLast
		Debug.Print "Статический набор записей " & "для таблицы 'Сотрудники' после вызова MoveLast"
		Debug.Print "    RecordCount = " & rstEmployees.RecordCount
		rstEmployees.Close
		' Открывает объект Recordset с последовательным доступом и 
		' отображает свойство RecordCount до заполнения набора.
		Set rstEmployees = .OpenRecordset("Сотрудники", dbOpenForwardOnly)
		Debug.Print "Набор записей с последовательным доступом " &  "для таблицы 'Сотрудники' до вызова MoveNext"
		Debug.Print "    RecordCount = " & rstEmployees.RecordCount
		' Отображает свойство RecordCount после заполнения набора
		' записей.
		rstEmployees.MoveNext
		Debug.Print "Набор записей с последовательным доступом " & "для таблицы 'Сотрудники' после вызова MoveNext"
		Debug.Print "    RecordCount = " & rstEmployees.RecordCount
		rstEmployees.Close
		.Close
	End With
End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем - 20.03.2002