假设你要更新100条记录:
选择菜单命令File, NEW一个Thread Object线程对象,取名TThrUpdateBB,
并添加属性:
property Query: TQuery read FQuery write FQuery;
property Progress: Integer read FProgress;
在EXECUTE中写入SQL执行代码:
procedure TThrUpdateBB.Execute;
var
C: Count;
begin
{ Place thread code here }
if not Assigned(FQuery) then
Exit;
with FQuerydo
begin
Active := False;
Params.Clear;
Params.CreateParam(ftInteger,'VID', ptInput);
SQL :='insert into aa select * from bb where ID = :VID';
end;
C := 100;
FProgress:=0;
while not Terminateddo
begin
with FQuerydo
begin
Params[1].AsInteger := I;
Execute;
end;
Inc(FProgress);
if FProgress>=C then
Break;
end;
end;
线程执行前应把QUERY赋值。如果要显示进度,添加一个进度窗体,线程执行时创建
此窗体并显示,每更新一条(或几条)记录则将进度窗口更新(要用Synchronize),
在进度窗口中点取消则执行本线程的Terminate方法,应该很简单的。