adotable.edit;
.
.
adotable.fields.fields[i].value:=stringgrid1.cell[j,i];提示ADOTable:Dataset not in edit or insert mode.请问是不是adotable控件的哪个属性还得设一下?
.
.
adotable.fields.fields[i].value:=stringgrid1.cell[j,i];提示ADOTable:Dataset not in edit or insert mode.请问是不是adotable控件的哪个属性还得设一下?
建议你把别的代码也贴出来看看,可能里面有些语句不太符合逻辑
var
i,j:integer;
begin
//ADOTable.Edit;
ADOTable.First;
for i:=1 to ADOTable.RecordCount-1 do
begin
for j:=1 to ADOTable.FieldCount-1 do
begin
if Trim(StrGrid.Cells[j,i])<>'' then
begin
ADOTable.Edit;
ADOTable.Fields.Fields[j].Value:=FormatFloat('0.00',StrTofloat(Trim(StrGrid.Cells[j,i])));
end
else
ADOTable.Edit;
ADOTable.Fields.Fields[j].Value:=null;
end;
ADOTable.Next;
end;
ADOTable.Post;
end;
procedure Tjgfrm.Button1Click(Sender: TObject);
var
i,j:integer;
begin
//ADOTable.Edit;
ADOTable.First;
for i:=1 to ADOTable.RecordCount-1 do
begin
for j:=1 to ADOTable.FieldCount-1 do
begin
ADOTable.Edit;
if Trim(StrGrid.Cells[j,i])<>'' then
ADOTable.Fields.Fields[j].Value:=FormatFloat('0.00',StrTofloat(Trim(StrGrid.Cells[j,i])))
else
ADOTable.Fields.Fields[j].Value:=null;
ADOTable.Post;
end;
ADOTable.Next;
end;
end;还有就是,i,j初始循环值是不是应该是0而不是1呢?
就比如i,如果你想从第一条记录到最后一条记录做操作,初始值应该是0
谢谢。我的i,j就是从1开始的,我从第二个字段开始取值。
现在不提示ADOTable:Dataset not in edit or insert mode.也不报错。
但并未保存。
改成
ADOTable.UpdateBatch();
不好意思,早上改的程序还是有点问题,刚才看了看,再改了改procedure Tjgfrm.Button1Click(Sender: TObject);
var
i,j:integer;
begin
ADOTable.First;
for i:=1 to ADOTable.RecordCount-1 do
begin
ADOTable.Edit;
for j:=1 to ADOTable.FieldCount-1 do
begin
if Trim(StrGrid.Cells[j,i])<>'' then
ADOTable.Fields.Fields[j].Value:=FormatFloat('0.00',StrTofloat(Trim(StrGrid.Cells[j,i])))
else
ADOTable.Fields.Fields[j].Value:=null;
end;
ADOTable.Post;
ADOTable.Next;
end;
end;
按理来说,应该post后就被保存了的。