小弟用ado,第一次导出数据时,正常,接着导出另外的数据时,报错:at_occasional :cannot perform this opration on a open dataset.
小弟的程序如下:
var
  i,j,k : integer;
begin
  inherited;
    dm1.AT_occasional.TableName := dbComboBox1.Text;
    dm1.AT_occasional.Active:= true;
    dm1.AT_occasional_1.Active := true;
    dm1.AT_occasional.First;
    dbgrid1.DataSource.DataSet.First;
    dm1.AT_occasional.Append;
    for j := 0 to dbgrid1.DataSource.DataSet.RecordCount-1 do
    begin
      dm1.AT_occasional.Append;
      dm1.AT_occasional_1.Insert;
      for i := 0 to dbgrid1.FieldCount-1 do
      begin
        if dbgrid1.Fields[i].FieldName = 'flag' then
        begin
          dbgrid1.DataSource.DataSet.Edit;
          dbgrid1.Fields[i].Value := dbgrid1.Fields[i].Value +1 ;
          dbgrid1.DataSource.DataSet.Post;
        end;
        if dbgrid1.Fields[i].FieldName = 'out_datatime' then
        begin
          dbgrid1.DataSource.DataSet.Edit;
          dbgrid1.Fields[i].Value := now ;
          dbgrid1.DataSource.DataSet.Post;
        end;
        dm1.AT_occasional.Edit;
        dm1.AT_occasional.Fields[i].Value := DBGrid1.Fields[i].AsVariant;
        dm1.AT_occasional.Post;
      end;
      dbgrid1.DataSource.DataSet.Next;
      dm1.AT_occasional.Next;
    end;
  showmessage('数据已经成功保存到'''+DBComboBox1.Text+'''');
end;