详情:
http://blog.csdn.net/fengsh998/archive/2010/11/04/5988053.aspx网上好多分页都是写SQL,或用存储过程。当三层的时候每次取数据都要重新执行一次SQL或存储过程。于是:我写了个缓存分页,可以方便的在客户端实现浏览,同时内部有自动刷新后端数据机制。
排序,等功能。如有些朋友想在DBGRID上显示哪种,上一页,下一页,最后一页,第一页,跳到XX页,的这些功能时,用这个控件。就会满足咯。

解决方案 »

  1.   

    控件下载地址
    http://download.csdn.net/source/2808922DLEPHI 控件。目前发现在支持BDS2006 原版的DBX操作ORACLE时,有BUG。
      

  2.   

    原来其实很简单,就是在客户端自行管理内存。
    同样会存在因内存开销过大而导致崩溃,不过相对于CLIETNDATASET的哪个内存表来说,还是比CLIENTDATASET的内存空间要大得多。
      

  3.   

    支持自曝,不过我也有sz_haitao的疑问。
      

  4.   

    比方说吧,现在 有20万条数据,如果select * from XX 一次取回20万条,放在DBGRID里,是不是要拖动鼠标到最后一条呀?如果按上下键,哪不累死人?我这个分页用来指定每页规定的页数。点下一页的时候才会翻页显数据,否则DBGRID里就只能显示指定的条数。也可以用GOTO 跳到指定页,当然数据量大的情况下,也不太建议用GOTO。效率不是很好。
    如果有高手提出更好的算法来查找,哪自然最好了。小弟水平有限,不过分页是出来了。
      

  5.   

    全部取到本地1、取的方法是 一次性取 还是 背景分页取(前者会假死n秒钟;后者立即返回前1页)——楼主好像不是指这个分页?
    2、已经全部取到本地,dbgrid随意滚 还是 按页号显示——楼主好像指的是这个?
    这个 dbgrid1.datasource.dataset.moveby(页号*行数/页) 就行了
      

  6.   

    非一次性取,MOVEBY也确实好用。
      

  7.   

    最近也在做分页,用的是ORACLE数据库,两层。
    实现原理:建立一个临时表两个字段存储ROWID,ROWNUM,每次查询将将所有数据放入临时表,当查询条件改变时清空临时表数据,再将数据放入临时表。每次从临时表读取固定的页数的数据进行显示
      

  8.   

    RowNum这种效率上来说还可以,现在考虑的是查询上和数据从远程传输到本地的效率问题。细究D底层发现很多都是用游标来做的。这里控件完全辟开了ROWNUM分页的特性。