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