我使用ADO连接本地ACCESS数据库,用ADOQUERY提取数据送入DBGRID中,由于数据量大,出现了长时间的等待状态,我希望能在此时用进度条表示提取的进度,该如何处理,谢谢!
解决方案 »
- 话说开帐号到现在有5个月了,刚刚步入5个三角,何时升星?
- 在程序中获得系统的ODBC名
- RichEdit的打印问题
- ADOTABLE中记录POST的问题
- 菜鳥問題﹐請速幫幫忙﹗
- 如何在CloseQuery中判断退出模式?
- 指数超难问题解决了100分献上
- 帮帮看看这个程序 N多不懂!
- 出现"Statement expected,but expression of type'TfrxCustomPreview'found",就如何解决?
- 关于DBGRID的位数处理,打印的问题
- 关于进度条
- 在fastreport或reportmachine中如何重设默认打印机(更换打印机或修改设定)而无需退出程序?
然后在FetchProgress事件中可以知道现在的进度:
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
beginend;
//Fadoqry.ExecuteOptions := [eoAsyncFetchNonBlocking];
data.adoqry.OnFetchProgress := ADODataSet1FetchProgress;
procedure TForm1.ADODataSet1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
ProgressBar1.Position := Progress;
progressbar1.Max := maxprogress;
label1.caption := inttostr(progress)+'/'+inttostr(maxprogress);
Application.ProcessMessages;
end;
2。这个进度条的当前值是多少,(用来反映你取数据时的进度值 Progress )
将ADOQuery的ExecuteOptions属性中的eoAsyncFetch(异步提取)设为TRUE
然后在FetchProgress事件中可以知道现在的进度:
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
beginend;
,不报错,但也看不到进度条ProgressBar1有任何动作。目前我使用的是Access数据库,各项配置如下:form1.adoquery1.connection=adoconnection;
form1.datasource1.dataset=adoquery1;
form1.dbgrid.datasource=datasource1;
未使用Tadodataset
adoquery1.ExecuteOptions := [eoAsyncFetchNonBlocking];
adoquery.OnFetchProgress := ADOQuery1FetchProgress;
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
ProgressBar1.Position := Progress;
progressbar1.Max := maxprogress;
label1.caption := inttostr(progress)+'/'+inttostr(maxprogress);
Application.ProcessMessages;
end; 还请各位心人继续关心指教,谢谢!
取得你的循环次数MaxValue;
然后
progressbar1.positon:=0;
progressbar1.min:=0;
progressbar1.max:=MaxValue;
progressbar1.step:=1;
progressbar1.stepit;
progressbar1.stepit;
application.processmessage;//防止白班