adotable.edit;
.
.
adotable.fields.fields[i].value:=stringgrid1.cell[j,i];提示ADOTable:Dataset not in edit or insert mode.请问是不是adotable控件的哪个属性还得设一下?

解决方案 »

  1.   

    提示说的是你的adotable不在添加或者修改的状态下,这就意味着不能编辑表中的数据。说明你前面的 adotable.edit没有生效或者adotable.edit这个操作已经被取消,
    建议你把别的代码也贴出来看看,可能里面有些语句不太符合逻辑
      

  2.   

    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
          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;
      

  3.   

    在你原来的基础上,做了一次修改,你看看吧
    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
      

  4.   

    同意  nnx(倪香儿) 的说法 nnx(倪香儿) 是个美女吧,联系我。
      

  5.   

    nnx(倪香儿):
    谢谢。我的i,j就是从1开始的,我从第二个字段开始取值。
    现在不提示ADOTable:Dataset not in edit or insert mode.也不报错。
    但并未保存。
      

  6.   

    ADOTable.Post;
    改成
    ADOTable.UpdateBatch();
      

  7.   

    skytears (苦)  : 
      不好意思,早上改的程序还是有点问题,刚才看了看,再改了改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后就被保存了的。