| ASP技巧TOP10 (1) |
|
| 来源: 作者: 加入时间:2006-12-8 访问次数:4 [大 中 小] |
|
请改用下面的代码: If objRst.BOF and objRst.EOF Then ' 记录集为空 Else Do While not objRst.EOF ' 处理记录集 objRst.MoveNext Loop End If
2000年06月30日更新,新西兰的Daryl Egarr说:
可以看出,读者提问中的代码并没有错误。问题在于“在低版本的MDAC中RecordCount属性返回-1”,这一判断本身并没有错误,然而从提问内容来看作者不应该作出这种假定,因为原问题中没有任何一行代码意味着使用了低版本的MDAC。
作者考虑问题的方向不对,问题的要点在于并非所有的游标类型都支持所有的属性和方法(不管采用哪种数据库系统)。问题中代码出现错误的真正原因在于使用默认的CursorLocation时: Recordset.CursorLocation = adUseServer
RecordCount属性只有在记录集的CursorType为1或者3(即adOpenKeyset,adOpenStatic)时才是可用的。出现错误的代码没有指定CursorType,也就是使用了0类型的游标(即adOpenForwardOnly,这是速度最快的游标类型),此时对RecordCount的引用将一直返回0。
解决问题的方法很简单,只要把原来代码中的: objRst.Open strSQL, objConn
改成: objRst.Open strSQL, objConn ,1
|
|
|
|
|
|