小弟用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;
小弟的程序如下:
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;
在ADOTABLE的ACTIVE属性为TRUE时是不能改变它的TABLENAME属性的.