delphi adoquery进度条 10
准备做一个编译Oracle无效对象的功能,先是在listview里面查询所有无效对象,然后点击按钮的时候根据listview内容生成alter。。。compile的语句去...
准备做一个编译Oracle无效对象的功能,先是在listview里面查询所有无效对象,然后点击按钮的时候根据listview内容生成alter。。。compile的语句去执行,执行的过程有进度条显示进度,query控件当无效对象很多的时候程序假死了,然后进度条是从0最后直接到了100.没有中间递增的过程,这样一般是怎么搞定的?比如假死和进度条过度的问题。代码如下:
for I := 0 to lvCompile.Items.Count - 1 do
begin
rzprgrsts1.Percent := 100 * Trunc((I + 1) / lvCompile.Items.Count);
edtErrInfo.Lines.Clear;
edtErrInfo.Lines.Add('正在编译对象 ' + lvCompile.Items.Item[I].SubItems[0]);
strTmp := 'ALTER ' + lvCompile.Items.Item[I].SubItems[1] + ' ' + lvCompile.Items.Item[I].SubItems[0] + ' COMPILE';
with DM.orqryCompile do
begin
try
Close;
SQL.Clear;
SQL.Add(strTmp);
ExecSQL;
except
end;
end;
end; 展开
for I := 0 to lvCompile.Items.Count - 1 do
begin
rzprgrsts1.Percent := 100 * Trunc((I + 1) / lvCompile.Items.Count);
edtErrInfo.Lines.Clear;
edtErrInfo.Lines.Add('正在编译对象 ' + lvCompile.Items.Item[I].SubItems[0]);
strTmp := 'ALTER ' + lvCompile.Items.Item[I].SubItems[1] + ' ' + lvCompile.Items.Item[I].SubItems[0] + ' COMPILE';
with DM.orqryCompile do
begin
try
Close;
SQL.Clear;
SQL.Add(strTmp);
ExecSQL;
except
end;
end;
end; 展开
1个回答
展开全部
我不知道你所谓的“Oracle无效态销对象”是神马玩意,亮禅但显敬闭尘示ADOQuery进度是有办法的。
1、将ADOQuery的ExcuteOption属性中的eoAsyncFetch设为True,使其能够触发异步消息。
2、在ADOQuery的OnFetchProgress事件里处理进度,进度会显示在窗体标题上:
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
Self.Caption := '完成百分比: ' + IntToStr(Trunc(Progress / MaxProgress * 100)) + '% ';
Application.ProcessMessages;
end;
1、将ADOQuery的ExcuteOption属性中的eoAsyncFetch设为True,使其能够触发异步消息。
2、在ADOQuery的OnFetchProgress事件里处理进度,进度会显示在窗体标题上:
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
Self.Caption := '完成百分比: ' + IntToStr(Trunc(Progress / MaxProgress * 100)) + '% ';
Application.ProcessMessages;
end;
更多追问追答
追问
我用的是raize的progressbar控件,它没有异步的选项。这个怎么弄?
追答
您怎么不明白,异步是ADOQuery的功能,你把用标题显示进度改成Bar显示进度不就得了!我说了半天白说了,响应的是ADOQuery的OnFetchProgress事件,跟ProgressBar有毛关系!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询