我想跟代码关系不大,因为前一种情况就能正常运行,后一情况如果不去动DBGrid的属性也不会出错,而且我把代码精简到如下最简单情况还是一样:
for i:=1 to 10 do
begin
  with MainDataModule.tblDayIncrease do
  begin
    Append;
    FieldByName('cycle').AsInteger := 1;
    FieldByName('asset_date').AsDateTime := dValueDate;
    Post;
  end;
end;