While Not rsAuthors.EOF
Response.Write rsAuthors("au_lname:) & ", " & _
rsAuthors("au_fname") & "<BR>"
rsAuthors.MoveNext
Wend
上面的例子一直循环到EOF属性为True时才退出。MoveNext方法用于移到下一条记录。
如果记录集允许向后移动,则可以使用MovePrevious方法。在这种情况下,循环中需要检测BOF属性值。另外分别还有移动到第一条和最后一条记录的MoveFirst和MoveLast方法:
rsAuthors.Open "authors", strConn, adOpenDynamic
' Now on first record
rsAuthors.MoveLast
' Now on last record
rsAuthors.MovePrevious
rsAuthors.MovePrevious
' Now three rows from the end of the recordset
rsAuthors.MoveFirst
' Back at the beginning again
3. 使用Fields集合
Fields集合包含记录集中每一字段(列)的Fields对象。Fields集合是记录集的缺省集合,因此在访问字段时可以省略,就如同上面的While...Wend例子中的情况。因此,有多种访问字段的方法:
rsAuthors.Fields("au_lname").Value
rsAuthors("au_lname).Value
rsAuthors(1).Value
rsAuthors.Fields(1).Value
可以使用字段名,或使用它在集合中的位置。使用名字是最好的,因为这样将使代码更易于维护。
Value属性是字段的缺省属性,因此也可以省略,比如:
rsAuthors("au_lname")
如果想遍历所有字段,可以使用For Each结构:
For Each fldAuthor In rsAuthors.Fields
Response.Write fldAuthor.Name & " : " & _
fldAuthor.Value & "<BR>"
Next
这个例子将打印每一个字段的名字和值。
4. 书签
当在记录集中移动时,可能需要保留记录的位置,以后再移回来。同真实的书签相似,一个记录集书签是一个指向单个记录的唯一的指针。
为了使用书签,只需将Bookmark属性值赋予一个变量:
varBkmk = rsAuthors.Bookmark
然后,可以在记录集中移动,以后可以通过相反的命令将记录移到做过书签标记的相应记录上:
rsAuthors.Bookmark = varBkmk
在记录集中查找记录时,书签是非常有用的。在本章稍后的8.4.5节中有一个相关的例子。
注意,并非所有记录集都支持书签,Supports方法(在下面讨论)将能识别其是否支持书签。
值得注意的重要一点是,不能跨越不同的记录集使用书签,即使这些记录集是相同的命令创建的。考虑一下以下代码:
rsAuthors.Open "authors", strConn
rsAuthorsOther.Opne "authors", strConn
尽管两个记录集是用相同的命令创建的,但记录集的书签是不一样的。
可以使用Clone方法获得可交换的书签,但在这里我们不讨论它。
5. 支持的功能
如上所述,并非所有的记录集都支持书签。还有许多其他的记录集选项也不是被所有的提供者或记录集类型支持的,因此可以用Supports方法验证一下。
Supports方法使用一个或多个CursorOptionEnum值作为参数,返回True或False表明是否支持该选项。这些值的列表相当庞大,所以将其列于附录F中。
例如:
If rsAuthors.Supports(adBookmark) Then
' The recordset supports bookmarks
varBkMk = rsAuthors.Bookmark
End If
可以使用Or或加号“+”组合多个常数:
If rsAuthors.Supports(adBookmark Or adFind) Then
' The recordset supports bookmarks and use of Find
varBkMk = rsAuthors.Bookmark
End If