TableHis.Open;
    
    TableHis.First;
    while not TableHis.Eof do
    begin
       convertRes:=ConvertTtNew(TableHis['tt']);
       TableHis['xh']:=convertRes[0];
       TableHis['ch']:=convertRes[1];
       TableHis.Next;
    end;
这是我的源代码,出错信息:dataset not in edit or insert mode

解决方案 »

  1.   

    TableHis.Open;
        TableHis.edit;     //少了一句!
        TableHis.First;
        while not TableHis.Eof do
        begin
           convertRes:=ConvertTtNew(TableHis['tt']);
           TableHis['xh']:=convertRes[0];
           TableHis['ch']:=convertRes[1];
           TableHis.Next;
        end;
      

  2.   

    edit和post/save(时间太久不用, 忘了哪个对了)方法好像是针对单一记录的, 也就是说每条记录都需要执行一次. 如果需要对多条记录进行修改, 好像需要用批量修改方法... 另外你的需求如果用sql语句不是更容易么?
      

  3.   

    TableHis.Open;
        
        TableHis.First;
        while not TableHis.Eof do
        begin
           convertRes:=ConvertTtNew(TableHis['tt']);
           TableHis.Edit;
           TableHis['xh']:=convertRes[0];
           TableHis['ch']:=convertRes[1];
           TableHis.Post;
           TableHis.Next;
        end;
      

  4.   

    楼主是做his的?xh=序号?
    ch=床号?
      

  5.   

    不能用批量的,要单独修改没一条记录,因为没次都要先计算XH,CH的值.不是序号,床号,是线号,层号,我昨天用过EDIT 好象不行啊,今天试试
      

  6.   

    tongyi ______ plax0850(博克)
      

  7.   

    TableHis.Open;
        
        TableHis.First;
        while not TableHis.Eof do
        begin
           convertRes:=ConvertTtNew(TableHis['tt']);
           TableHis.Edit;
           TableHis['xh']:=convertRes[0];
           TableHis['ch']:=convertRes[1];
           TableHis.Post;
           TableHis.Next;
        end;
      

  8.   

    怎么没改过来呀,看我的源程序:
    begin
      with QuerySaveData do
      begin
        close;
        SQL.clear;
        SQL.Add('delete from historyT');
        execsql;    close;
        SQL.clear;
        SQL.Add('insert into historyT(lkid,cf,hw,tt,wsd,bz,dtime,xh,ch) select lkid,cf,hw,tt,wsd,bz,dtime,1,1 from timeT where bz=1');
        execsql;    {close;
        SQL.clear;
        SQL.Add('update set xh= ');
        Open;
        while not eof do
        begin
          convertRes:=ConvertTtNew(TableReal['tt']);    end;}
      end;
      QuerySaveData.Close;  TableHis.Open;
        TableHis.First;
        while not TableHis.Eof do
        begin
           convertRes:=ConvertTtNew(TableHis['tt']);
           TableHis.Edit;
           TableHis['xh']:=convertRes[0];
           TableHis['ch']:=convertRes[1];
           TableHis.Post;
           TableHis.Next;
        end;
      TableHis.Close;
    结果XH,CH的值还是1,成功的话还有2,3,4,5等值的呀
      

  9.   

    问题已解决,再加一句TableHis.ApplyUpdates;就可以了,谢谢大家的关注