我用Microsoft OLE DB Provider for SQL Server通过ADOConnection连接SQL Server数据库,采用分页机制,如下:ADOQuery.CursorLocation := clUseServer;
ADOQuery.CursorType := ctKeyset;
ADOQuery.CacheSize := 1000;
ADOQuery.SQL.Text := 'select * from test';
ADOQuery.Open;ADOQuery.Recordset.PageSize := 1000;
输出ADOQuery.Recordset.PageSize为-1使用ACCESS就可以。这是为什么?ADO的分页机制不是靠驱动实现的吗?难道SQL SERVER的ADO驱动不支持分页机制?

解决方案 »

  1.   

    补充,如果不使用分页则没问题,因此,数据库连接是没问题的。ConnectString = Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=dbimporttest;Data Source=helps2000
      

  2.   

    我做的是数据库的导入,数据库类型不定,因此不能使用各种数据库专用的分页机制,ADO不是有分页机制吗?为什么SQL SERVER的ADO驱动不能分页?
      

  3.   

    ADOQuery.CursorLocation := clUseServer;
    ADOQuery.SQL.Text := 'select * from test';
    ADOQuery.Open;
    ADOQuery.Recordset.PageSize:=20;
    ADOQuery.Recordset.AbsolutePage:=2;//这个方法只能将ADOQuery.Recordset(注意这里是Recordset,不是ADOQuery,他们不是同步地,只有执行ADOQuery。resync([rmExact])后才同步)的当前记录移动到第21条,如果要只显示21-40这20条记录需要自己控制.(页可以说不支持分页,只是为分页提供一种可能)
      

  4.   

    以前做过一个com+组件给ASP用是可以实现分页的,用的就是
    ADOQuery.Recordset.PageSize
    ADOQuery.Recordset.AbsolutePage
      

  5.   

    ADOQuery.CursorLocation := clUseServer;
    ADOQuery.SQL.Text := 'select * from test';
    ADOQuery.Open;
    ADOQuery.Recordset.PageSize:=20;
    ADOQuery.Recordset.AbsolutePage:=2;//这个方法只能将ADOQuery.Recordset(注意这里是Recordset,不是ADOQuery,他们不是同步地,只有执行ADOQuery。resync([rmExact])后才同步)的当前记录移动到第21条,如果要只显示21-40这20条记录需要自己控制.(页可以说不支持分页,只是为分页提供一种可能)