读书人

简单删除的有关问题

发布时间: 2012-04-02 19:58:59 作者: rapoo

简单删除的问题

Delphi(Pascal) code
procedure DelSameRecord(var MemTable: TMemTableEh; CheckFields: string);  //TMemTableEh和table一样  var FFieldList,FFieldValueList : TStringList;      tempCheckFields,tempField,tempDifferValue: string;      i : integer;  begin     FFieldList := TStringList.Create;     FFieldValueList := TStringList.Create;     FFieldList.CommaText := CheckFields;     MemTable.First;     while not MemTable.Eof do     begin        tempDifferValue := '';  //存储一个或多个字段的值组成的检查项        for I := 0 to FFieldList.Count - 1 do        begin          tempDifferValue := tempDifferValue + MemTable.FieldByName(FFieldList.Strings[i]).AsString +',';        end;        if FFieldValueList.IndexOf(tempDifferValue) >= 0 then //有重复值,则删除当前记录        begin          MemTable.Delete; //这里会有点问题,当重复值为最后一条时,指针会指向第一条记录                          end        else        begin          FFieldValueList.Add(tempDifferValue);          MemTable.Next;        end;     end;     FFieldList.Free;     FFieldValueList.Free;  end;

我就是想在MemTable中删除重复的记录,如果MemTable中只有两条记录,并且他们是相同的,MemTable.Delete删除后,MemTable.Eof为false,继续把第一条也删掉了,晕。这个怎么判断为最后一条?在MemTable.Delete;加入 if MemTable.bof也是false。

[解决办法]
往往是自己提出问题,然后就知道该怎么解决了,如果不提出来,一直不知该如何解决。
也许这是是因为,提出问题的过程,实际上也是使问题更加明确的过程,这样一来,问题进一步明确,就更加容易解决了。

读书人网 >.NET

热点推荐