我需要查询access2000的一个表,但受条件所限我只能用delphi5和tquary组件查询(不能用ado组件),但查的这条sql语句将会使我的这个access2000库的数据表返回上千条记录,这很耗费资源,所以我想问问各位如何设置或查询可以一次返回一定数量的记录(比如一次查到1000条,但我每次只需要20条,如何让数据集只进行一次性查询全部记录,但每次只返回20条,当需要时再调入下20条,依此类推。)在此先送上100分不够可再加,先谢了。

解决方案 »

  1.   

    我只知道
    select top 20 from table 
    是取表的前20条记录;你可以试试有没有另外的函数可以取下面20条;
      

  2.   

    delphi有三种数据库连接方式dbe ado dbexpress
    ado你不能用,delphi又没有datasnap技术就是说dbexpress也不能用,看来你只能用dbe了,dbe好像又没有ADOConnetioned = false这样的属性,看来你只能用sql语句了。up
      

  3.   

    如果数据不是时时更新,觉得用两ListView控件好一点
    一个存全部记录,另一个显示要求的20条数据。
    这样做估计比dbgrid控件效率高,且查询下一个20条快多了
      

  4.   

    select top 20 from table
      

  5.   

    问题没解决,顶一下。如果用ado能解决吗?
      

  6.   

    如果用ado连接怎么解决?
      

  7.   

    1、先从数据库中把数据读入到内存中。
    2、设置一个全局变量cou表示每块的纪录数。
    3、设置一个全局变量ci表示当前的块。从1开始计数
    4、编写一个读取块的函数。readci(i:integer);//i表示块数
    procedure readcou(i:integer);
    var i:integer;
    begin
      query1.moveby ((cou*(ci-1))+1);
      for i:=1 to cou do begin
        {
          你的处理过程.......
         }
        query1.next;
      end;  
    end;
    写完了,快给分!
      

  8.   

    谢谢各位,但PaPaCong(小勇) 的方法是不对的,因为一开始还是要把查询到的所有记录调入内存,这样如果几千条的话反应是很慢的,我的意思是可以查询到几千条但每次调入几十条,这样系统响应速度不会变慢,delphi7的dbexpess控件通过设置是可以做到的,但条件所限,我只想知道用bde和ado是否能做到,没想到这问题这么难!!!!!!!!!
      

  9.   

    SQL  :select top 20 from tablename