在使用ADO查询ORACLE数据库时,查询的记录有很多,
我想让它,动态的反应查询的进度,
即(14%)百分之多少的形式表现,如何实现??

解决方案 »

  1.   

    将ADOQuery的ExecuteOptions属性中的eoAsyncFetch(异步提取)设为TRUE
    然后在FetchProgress事件中可以知道现在的进度:
    procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
      Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
    beginend;
      

  2.   

    不行呀!
    照您的方法试了一下,代码如下
    procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
      Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
    begin
    label1.caption :=IntToStr(Trunc(progress/maxprogress *100))+'%';
    end;
    结果它只在执行完查询才显示100%,并没有动态的显示进度
    为什么 会这样呢?
      

  3.   

    dwgz 没在吗?有没有办法???谢谢
      

  4.   

    一样了,它只有触发一下ADOQuery1FetchProgress这个事件
      

  5.   

    数据量太少了.这样试试看
    sleep(100);
    label1.caption :=IntToStr(Trunc(progress/maxprogress *100))+'%';
      

  6.   

    加一个ADOConnection设置ConnectOption为coAsyncConnect 再设置ADOQuery的
    ExecuteOptions := [eoAsyncFetchNonBlocking]即可;
      

  7.   

    TO :SZ1008
    可以,谢谢SZ1008
    为什么要这样设置?解释一下吗?谢谢!还有一个问题就是一下就99%,到100%,要很久
      

  8.   

    因为ADOQuery连接的关系;不用ADOconnection设置的话必须在连接的相关文件中设置,
    99-〉100的设置可能得在OnFetchComplete事件里写一下