Я считаю, что свойство RecordCount
для Recordset
динамически устанавливается на количество данных, которые были прочитаны с курсора.То есть, когда он впервые открыт, он равен 1;если вы сделаете rs.MoveLast
, будет установлено фактическое количество записей в наборе.Тем не менее, у вас возникает проблема с возвратом к началу: у вас должен быть открыт набор записей в определенном режиме (который я забыл из головы), чтобы иметь возможность произвольно перемещать указатель курсора назад и вперед.
Обычный способ перебора курсора - использовать цикл while
, проверяющий конец файла курсора:
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select book_name from book")
Dim i As Integer
i = 0
While Not rs.EOF
lbBooks.AddItem rs!book_name
rs.MoveNext
i = i + 1
Wend