ASP技巧:RecordCount=-1解决方案

发表于:2007-06-30来源:作者:点击数: 标签:
现象 当在 服务器 端请求RecordCoun时会返回-1。这是因为ActiveXDataObjects(ADO)2.0中的CursorType是adOpenForwardonly或者adOpenDynamic。 如果是ADO1.5,只发生在cursortype是adOpenForwardonly的时候。如果使用OLEDBproviderforJET和 SQL Server产生的结
    现象

  当在服务器端请求RecordCoun时会返回-1。这是因为ActiveX Data Objects (ADO) 2.0中的CursorType是adOpenForwardonly或者adOpenDynamic。

  如果是ADO 1.5,只发生在cursortype是adOpenForwardonly的时候。如果使用OLEDB provider for JET和SQL Server产生的结果可能不同,这依赖于数据库的提供者。 

  提供者可能不支持某些CursorTypes。当你选择的CursorType不被支持时,提供者将选择最接近于你所请求的CursorType。请参考你的提供者的文档。此外,请注意不是所有的LockType和CursorType的组合都可以同时工作。改变LockType将强制改变CursorType。请确定使用调试来检查CursorType的值。 

  原因 
     
  在动态的游标中纪录号可能改变。Forwardonly的游标无法返回RecordCount。

  解决办法 

  使用adOpenKeyset(=1)或者adOpenStatic(=3)作为服务器端游标或者客户端游标。客户端只使用adOpenStatic作为CursorTypes,而不管你选择什么样的CursorType。 
     
  状态
     
  这个形式是设计决定的。

===============================================================================

  链接文档帮助理解解决

  有关rs.open sql,1,1中“1”和另外一个“1”的解释

  rs.open sql,1,1也可以写成


rs.CursorType  =  1
rs.LockType  =  1
rs.open  sql

原文转自:http://www.ltesting.net