Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 记录集在代码中执行时只返回一条记录_Vba_Ms Access 2007_Dao - Fatal编程技术网

Vba 记录集在代码中执行时只返回一条记录

Vba 记录集在代码中执行时只返回一条记录,vba,ms-access-2007,dao,Vba,Ms Access 2007,Dao,此语句每次执行时总是只返回一条记录 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 原因是什么?我认为记录集的记录计数属性是动态设置为从光标读取的数据量的。也就是说,当它第一次打开时

此语句每次执行时总是只返回一条记录

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;如果执行
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

我相信
Recordset
RecordCount
属性是动态设置为从光标读取的数据量的。也就是说,当它第一次打开时,它被设置为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

感谢您的响应,但即使在我单步执行代码时,记录集属性也清晰地显示为
record count=1
感谢您的响应,但即使在我单步执行代码时,记录集属性也清晰地显示为
record count=1