我用以下代码更新一个DBGrid中的数据,但是用For循环对每一个记录更新
很慢,要出现等待,请问如何避免等待,能否给出详细代码,谢谢
for i:=0 to table1.RecordCount-1 do
begin
  Table1.RecNo:=i;
  if Table1.Fields[1].Value=true then
  begin
     CountTime:=Time-StrToTime(Table1.Fields[2].Value);
     Table1.Edit;
     Table1.FieldByName('已经上机时间').AsString:=TimeToStr(CountTime);;
     Table1.Post;
  end;
end;

解决方案 »

  1.   

    你用Sql语句写实现,试一试,应该速度能快点的!
      

  2.   

    用sql能改善,
       CountTime:=Time-StrToTime(Table1.Fields[2].Value);
         Table1.Edit;
         Table1.FieldByName('已经上机时间').AsString:=TimeToStr(CountTime);;
         Table1.Post;
     adodataset1.commandtext:='update table1 set 已经上机时间='''+TimeToStr(CountTime)+'''';
      

  3.   

    table1.DisableControls;
    for i:=0 to table1.RecordCount-1 do
    begin
      Table1.RecNo:=i;
      if Table1.Fields[1].Value=true then
      begin
         CountTime:=Time-StrToTime(Table1.Fields[2].Value);
         Table1.Edit;
         Table1.FieldByName('已经上机时间').AsString:=TimeToStr(CountTime);;
         Table1.Post;
      end;
    end;
    table1.enableControls;
      

  4.   

    以上去掉
     CountTime:=Time-StrToTime(Table1.Fields[2].Value);
         Table1.Edit;
         Table1.FieldByName('已经上机时间').AsString:=TimeToStr(CountTime);;
         Table1.Post;