gpt4 book ai didi

delphi - 在非常慢的查询中,如何指示进度百分比

转载 作者:行者123 更新时间:2023-12-03 15:10:35 25 4
gpt4 key购买 nike

我正在使用 ZEOS 组件连接到(古老的)MDB 数据库。
我正在执行一个查询,读取大量数据以桥接到不同的数据库。

有没有办法以百分比表示进度?

procedure TForm13.ActionReadInMemoryExecute(Sender: TObject);
var
QueryLine: string;
FullQuery: string;
Tablename: string;
i: integer;
begin
i:= 0;
TableMeter.DisableControls;
try
TableMeter.First;
FullQuery:= '';
while not TableMeter.eof do begin
Tablename:= TableMeter.FieldByName('tabelnaam').AsString;
QueryLine:= ReplaceStr(ImportQuerySjabloon, cTabelname, Tablename);
FullQuery:= FullQuery + QueryLine;
if (TableMeter.RecNo < (TableMeter.RecordCount -1)) then begin
FullQuery:= FullQuery + ' UNION ALL ';
end;
TableMeter.Next;
end; {while}
QueryImportMeterreadings.Close;
QueryImportMeterreadings.SQL.Text:= FullQuery;
QueryImportMeterreadings.Open; <<-- takes a long time
finally
TableMeter.EnableControls;
end;
end;

有没有办法指示查询的进度,或者只有在拆分各个查询并消除 UNION 时才可以这样做。
运行时间约1分钟,涉及8个工会。

我没有看到任何可以用于此目的的事件:

或者我应该在查询中的字段上伪造一个 OnCalcField 来执行此操作(不确定原则上是否有效)。
或者附加一个序列?不,在 Access DB 上提供不受支持的操作

最佳答案

我说拆分各个查询并消除联合,在每个查询周围设置一个计时器,具体取决于所用的平均时间 * 剩余查询的数量,您应该给出估计/更新文本字段以说出 y 个查询中的 x已完成(剩余时间:-time-)

关于delphi - 在非常慢的查询中,如何指示进度百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8527845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com