我有一个很耗时间的查询操作,要查询很多数据。可是,我想让数据一旦被查询出来就能够显示,该怎么做。我试过多线程了,好像不行。我想能不能让程序(也就是我的那个for,每for一次就停这么100ms让界面得到更新,)该怎么办呢?还请各位指点很急,感激

解决方案 »

  1.   

    for i := 0 to 1000 do
        begin
             application.ProcessMessages;  //用这句话。
        end;
      

  2.   

    for i := 0 to 1000 do
        begin
              .....
              application.ProcessMessages;  //用这句话。
        end;
      

  3.   

    select top * 
    最好分段取,就算你都一次取出来了客户怎么看呢?
      

  4.   

    for i := 0 to 1000 do
        begin
              .....
              application.ProcessMessages;  //用这句话。
        end;
    一楼的这个方法你试试阿
      

  5.   

    三层,clientdataSet1.packetRecords=10  每次读10条记录,-1读所有记录
      

  6.   

    每次取查询数据的一部分.完成一部分后再做下一部分,采用三层容易实现些,在二层中你可以用TOP n每次限定查询的记录数.
      

  7.   

    使用SQL语句和记录条数限制子句来执行,否则没有办法。
    因为Delphi控件多半采用同步的方式获取数据。当然也有例外,比如ADO什么的。