我想读取数据库中大量的数据(100000条以上),我想用TAdoQuery的MaxRecords属性来做,分多次来读取数据,但是没有成功。希望得到大家的帮助。谢了。
我的做法:
     TAdoQuery.MaxRecords := 200;    query.close;
    query.sql.clear;
    query.sql.add('select * from zqhb order by userms');
    query.open;
    query.first;
    while not query.eof do
   begin
        memo1.lines.add(query.fieldbyname('userms').asstring));
        query.next;
  end;

解决方案 »

  1.   

    gmc007,你好,请问ADO的分页技术怎么用啊。我现在很急。谢了。
      

  2.   

    select top 100 * from table
    最前100条.select top 100 * from table
    order by bh desc
    最后100条select top 100 * from table
    where bh>100 and bh<200 //分页标记 取100-200条
      

  3.   

    大哥
    这不叫ADO的分页技术吧
    明显是用语言去解决了一个原则问题
    ——虽然他可能是对的
      

  4.   

    可以肯定的是将cursorLocation设为clUseServer速度会有明显的提高;
    其次,可以利用StringGrid用翻页来显示数据,比如“上一页”“下一页”
    不使用DBGrid的滚动条来拖动显示下条数据。每页可以设定显示的记录大小
    如:一页50显示条记录,下一页显示51-100条记录.
      ADOQuery1.Recordset.PageSize:=50;//页大小
      ADOQuery1.Recordset.AbsolutePage:=1;//第一页
    李维《ADO/COM+/MTS>>那本书说的比较多.
      

  5.   

    是,李维的书上有,用原生的adoQquery
      

  6.   

    在Delphi中如何你相用代码控制来取得数据的话,可以调用DataReuest方法;
      

  7.   

    回复人: wzrlover(流光逝水) ,你好!我想请教一下,为什么我的ADOQuery1查出来的数据只能向后翻页,如下:ADOQuery1.Recordset.PageSize:=pagesize;
        ADOQuery1.Recordset.CacheSize:=pagesize;
        ADOQuery1.Recordset.AbsolutePage:=1;
    ADOQuery1的属性:  clUseClient  ctDynamic