DAO.Recordset возвращает только одну запись при выполнении в коде - PullRequest
2 голосов
/ 16 января 2012

Этот оператор всегда возвращает только одну запись каждый раз, когда выполняется

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("Select book_name from book")
Dim i As Integer
For i = 0 To rs.RecordCount - 1
lbBooks.AddItem rs!book_name
rs.MoveNext
Next

что может быть причиной

1 Ответ

4 голосов
/ 16 января 2012

Я считаю, что свойство 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
...