Adodb recordset количество записей

Количество записей в таблице:

Dim mydb As Database ‘работаем с базой данных

Dim rst As Recordset ‘работаем с таблицей базы данных

‘указываем текущую базу данных (здесь можно указать также путь к другой БД)

Set mydb = CurrentDb()

‘открываем таблицу TableName, получаем Recordset с результатами

Set rst = mydb.OpenRecordset("TableName")

If rst.EOF = False Then ‘если в табл. записи есть

‘EOF – End Of File, BOF – Begin Of File

‘EOF = True или BOF = False означает, что Recordset пуст (нет записей)

rst.MoveLast ‘перейти на последнюю запись

MsgBox rst.RecordCount & " записей в табл. TableName", vbExclamation

MsgBox "Таблица пуста", vbExclamation

Количество записей в запросе

Dim mydb As Database ‘работаем с базой данных

Dim qry As QueryDef ‘работаем с запросом базы данных

Dim rst As Recordset ‘запускаем запрос с помощью Recordset

‘указываем текущую базу данных (здесь можно указать также путь к другой БД)

Set mydb = CurrentDb()

Set qry = mydb.QueryDefs("QueryName")

‘открываем запрос QueryName, получаем Recordset с результатами

Set rst = qry.OpenRecordset

If rst.EOF = False Then ‘если в rst записи есть

‘EOF – End Of File, BOF – Begin Of File

‘EOF = True или BOF = False означает, что Recordset пуст (нет записей)

rst.MoveLast ‘перейти на последнюю запись

MsgBox rst.RecordCount & " записей в запросе", vbExclamation

MsgBox "Нет записей в запросе", vbExclamation

по умолчанию стоит самая быстрая комбинация CursorType:=adOpenForwardOnlyLockType:=adLockReadOnlyдоступа к даннымпоменяйте CursorType = adOpenKeyset, например, тогда и получите кол-во записей.

Набор содержит строки если подключение к текущей базе, а если обращаюсь с этим же запросом к этой же базе, но она не является текущей для данного приложения (строка соединения соответствующая), то количество строк = -1

Сейчас еще раз просмотрел тип курсора. Бред какой-то. Я вно прописываю CursorType:=adOpenKeyset А по ходу выполнения просматриваю состояние набора, там не смотря на все мои старания CursorType:=adOpenForwardOnlyОткуда что берется.

Возможно, вы захотите узнать количество записей в объекте Recordset . You may want to know the number of records in a Recordset object. Например, может потребоваться создать форму, в которой показано количество записей в каждой из таблиц базы данных. For example, you may want to create a form that shows how many records are in each of the tables in a database. Кроме того, можно изменить внешний вид формы или отчета на основе количества записей, содержащихся в ней. Or you may want to change the appearance of a form or report based on the number of records it includes.

Читайте также:  Фото блондинок со спины с короткими волосами

Свойство RecordCount содержит количество записей в наборе записей табличного типа или общее число записей, доступ к которым осуществлялся в наборе записейдинамического подмножества или моментального снимка. The RecordCount property contains the number of records in a table-type Recordset or the total number of records accessed in a dynaset- or snapshot-type Recordset. Объект Recordset без записей имеет значение 0 для свойства RecordCount . A Recordset object with no records has a RecordCount property value of 0.

Значение свойства RecordCount равно количеству записей, к которым осуществлялся доступ. The value of the RecordCount property equals the number of records that have actually been accessed. Например, при создании динамического подмножества или моментального снимка вы обращаетесь (или посещаете) только к одной записи. For example, when you first create a dynaset or snapshot, you have accessed (or visited) only one record. Если вы проверите свойство RecordCount сразу же после создания динамического подмножества или моментального снимка (предполагая, что у него есть хотя бы одна запись), значение равно 1. If you check the RecordCount property immediately after creating the dynaset or snapshot (assuming it has at least one record), the value is 1. Чтобы открыть все записи, используйте метод MoveLast сразу же после открытия набора записей, а затем используйте MoveFirst , чтобы вернуться к первой записи. To visit all the records, use the MoveLast method immediately after opening the Recordset, and then use MoveFirst to return to the first record. Это не происходит автоматически, так как это может замедлиться, особенно для больших наборов результатов. This is not done automatically because it may be slow, especially for large result sets.

Читайте также:  Lords of the fallen системные требования

Когда вы открываете объект Recordset табличного типа, вы фактически посещаете все записи в базовой таблице, а значение свойства RecordCount равно количеству записей в таблице сразу после открытия набора записей . When you open a table-type Recordset object, you effectively visit all of the records in the underlying table, and the value of the RecordCount property equals the number of records in the table as soon as the Recordset is opened.

Отмененные транзакции могут сделать значение свойства RecordCount устаревшим в некоторых случаях многопользовательской ситуации. Canceled transactions may make the value of the RecordCount property out-of-date in some multiuser situations. При сжатии базы данных восстанавливается правильное значение счетчика записей таблицы. Compacting the database restores the table’s record count to the correct value.

В следующем примере кода создается объект Recordset типа моментального снимка, а затем определяется количество записей в наборе записей. The following code example creates a snapshot-type Recordset object, and then determines the number of records in the Recordset.

Так как приложение удаляет записи в наборе записейдинамического типа, значение свойства RecordCount уменьшается. As your application deletes records in a dynaset-type Recordset, the value of the RecordCount property decreases. Однако в многопользовательской среде записи, удаленные другими пользователями, не отражаются в значении свойства RecordCount до тех пор, пока текущая запись не будет размещена в удаленной записи. However, in a multiuser environment, records deleted by other users are not reflected in the value of the RecordCount property until the current record is positioned on a deleted record. В этот раз значение свойства RecordCount уменьшается на единицу. At that time, the setting of the RecordCount property decreases by one.

Читайте также:  Real sw видео вконтакте

При использовании метода Requery для объекта Recordset, за которым следует метод MoveLast , устанавливается значение свойства RecordCount равным текущему общему количеству записей в наборе записей. Using the Requery method on a Recordset, followed by the MoveLast method, sets the RecordCount property to the current total number of records in the Recordset.

Объект Recordset типа моментального снимка является статическим, и значение его свойства RecordCount не изменяется при добавлении или удалении записей в базовой таблице снимка. A snapshot-type Recordset object is static and the value of its RecordCount property does not change when you add or delete records in the snapshot’s underlying table.

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.