procedure DelSameRecord(Var MemTable : TMemTableEh;CheckField,ValueField:String);//MemTable和table类似
  Var
    tempDifferValue,currentValue,firstValue: String;
    i,j,k : Integer;
    CheckFieldSL,currentValueSL,firstValueSL: TStringList;
    iBook: TBookMark;
  begin
    try
      MemTable.DisableControls;
      CheckFieldSL := TStringList.Create;
      currentValueSL := TStringList.Create;
      firstValueSL := TStringList.Create;
      i := 0;
      MemTable.First;
      CheckFieldSL.CommaText := ''; //CheckFieldSL用于保存所有CheckField字段的值
      while i <= MemTable.RecordCount do
      begin
        //当前的记录行
        tempDifferValue := MemTable.FieldByName(CheckField).AsString;  //取得CheckField字段的值
        j := CheckFieldSL.IndexOf(tempDifferValue);
        if j >= 0 then    //有重复
        begin
           iBook := MemTable.GetBook; 
           currentValue :=  MemTable.FieldByName(ValueField).AsString;
           currentValueSL.CommaText := currentValue;
           if MemTable.Locate(CheckField,tempDifferValue,[]) then  //找到原记录,并更新ValueField的值
           begin
              firstValue := MemTable.FieldByName(ValueField).AsString;  //功能字段的内容格式为'a,b,c,d,e'
              firstValueSL.CommaText := currentValue;             
              for k := 0 to currentValueSL.Count - 1 do
              begin
                firstValueSL.Duplicates := dupIgnore;  //重复则放弃 ,否则保存到原纪录功能字段中
                firstValueSL.Add(currentValueSL[k]);
              end;
              MemTable.Edit;
              MemTable.FieldByName(ValueField).AsString := firstValueSL.Text;   
              MemTable.Post;
           end;
           MemTable.GotoBook(iBook);  //回到之前的记录
           MemTable.Delete;  //删除当前的记录
        end
        else
        begin
          //没有重复的情况,将当前的checkField的值保存到 CheckFieldSL中,并继续循环
          CheckFieldSL.Add(tempDifferValue);
          MemTable.Next; 
        end;                  
        Inc(i);
      end;
    finally
      FreeAndNil(CheckFieldSL);
      FreeAndNil(currentValueSL);
      FreeAndNil(firstValueSL);
      MemTable.EnableControls;
    end;
  end;我的目的是:表中有两个字段checkField和valueField,通过循环表,根据checkField来检查重复,如果有重复就将当前记录valueField的值和原记录的值做个比较,得到它们的并集,更新到原纪录中,删除当前的记录。
想不出来什么问题,当前记录是删掉了,但是原纪录没有更新!在线等,朋友帮我看看