在查询处理大量数据的等待过程中,弹出窗口显示进度条?(100分)

  • 主题发起人 chinausa
  • 开始时间
还是不“骗”的好,用TAnimate吧,Animate.CommonAVI有很多效果可选择的
 
同意 I_wanttoknow 的使用ADODataset异步查询功能
 
up一下结束吧
 
我的做法是在执行查询时先给statusbar写入“正在查询,请等待...”
查询完后就在statusbar中写入"查询完成,共有*****条记录"
好棒!继续讨论。。。。
 
进度条从1%----100%不停的重复
用户就不知道了:)
 
同意,搞一个假的进度条。如果想准确反映其进度,好几年了,我也没找到一个好办法
 
Bxch_1000说的比较好用,
我同意。
 
如果能知道当前已检索的结果数,就可以做一个进度条!
因为记录总数是可以先得到的。
 
并且在PB中是可以做进度条的,并且不是假象,是实实在在的
 
来自:liaotw 时间:2001-9-11 10:27:00 ID:619637
您可以使用ADO,将Options设置为异步方式不阻塞,然后就可以使用ADODataSet的
OnFetchProgress事件,在其中编写代码:
Procedure TForm1.ADODataSet1FetchProgress(DataSet:TCustomADODataSet;
Progress,MaxProgress:integer;var EventStatus:TEventStatus);
begin
ProgressBar1.Position:=Progress;
end;
如此就可以显示进度了。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=617649
 
DataSet.Open 有两部分操作耗时, 一部分是执行,一部分是获取记录集
执行部分的耗时是由于 SQL 语句复杂
获取记录集的耗时是由于结果集多
执行部分的进度无法用进度条的方式显示,只有用多线程执行 DataSet.Open 并再线程内操纵进度界面显示动画或不断变化的时间
获取记录集的进度可以按 WoDing 的说法做
另外 DataSet 也提供了异步执行的方式,但如果你使用数据感知控件,则不能使用异步执行,但可以使用异步Fetch,所以用数据感知控件时如果执行复杂耗时的 SQL 语句只能手工用多线程执行 DataSet.Open
 
方法真多...
 
顶部 底部