比如在dbgrid中,“上10条”,“下10条”,这样显示数据。
boss这么要求,说是害怕数据量大了,一次显示数据太多会影响性能。

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2365/2365596.xml?temp=.5068781
    交流--查询第X页,每页Y条记录
    邹建
      

  2.   

    俺使用的是oracle数据库,而且这样的问题应该就在delphi里面处理吧
      

  3.   

    环境:oracle8i+delphi6(ADO)  c/s 两层
      

  4.   

    发一条分叶语句给你参考一下:意思是返回第100-200 之间的记录。
    select * from (select table.*, rownum ron from table where rownum < 200) where ron > 100建议分叶中, 每叶的数量在500-1000 之间, 否则缺乏效率。
      

  5.   

    : txlicenhe(马可) 提供一贴子不错
    在Oracle里可以rownum来控制取多少行
      

  6.   

    分页是最easy的事情,ado本身就提供分页处理,你去csdn查找我的经验帖子:
    http://expert.csdn.net/Expert/topic/2050/2050427.xml?temp=.2559168
    ---------------------
    该帖子背景为显示大数据集,目前我以及成功做到1000,000(100万),反应速度也就是生成临时表的时间+提取当前记录集25行左右(每页),在加了索引的临时表提取当前记录集非常快,基本不需要考虑。如果你的表本身带id,那么连生成临时表都不需要。
      

  7.   

    假如DBGrid和DataSource连接,DataSource和ADODataSet1连接。
      ADODataSet1.Open;
      
      ADODataSet1.Recordset.PageSize := 10;
      ADODataSet1.Recordset.AbsolutePosition := 1;
    第一页
      ADODataSet1.Recordset.PageSize := 10;
      ADODataSet1.Recordset.AbsolutePosition := 11;
    第二页TADOQuery也是一样的
      

  8.   

    可以分页显示,只要设置clientdataset的packetrecords就可以了,想传几个就传几个
    还要把fetchondemand设为false;
      

  9.   

    我不同意楼上两位的说法, 使用pagesize来控制的只有在多层次应用系统中才能实现, 而且有个没有办法的缺陷就是会使本来可以成为无状态的应用服务器存储状态信息。
      

  10.   

    老大,DBGrid本来就是分页的,用CDS吧;_____________________________________________________________________暮春三月,羊欢草长,天寒地冻,问谁饲狼?人心怜羊,狼心独怆,天心难测,世情如
    霜……{言有尽而意无穷,余意尽在不言中……}
      

  11.   

    设置PageSize
    还是一下子把所有数据都提取出来的吧?这样效率能高吗?
    表里面的纪录可是30万笔以上的