这是我数据库数据:下面是我绑定出来的数据:
下面是代码:
function NewDataSet(dt:TDataSet):TDataSet;    {重新构造DataSet}
var mydt:TDataSet;
cdt:TClientDataSet;
i:Integer; a:Integer;
def:TFieldDef; cc:Integer;
begin
  if(dt<>nil)then
  begin
    cdt:=TClientDataSet.Create(Application);
    cdt.FieldDefs.Assign(dt.FieldDefs);
    cdt.FieldDefs.Add('ck',ftBoolean);
    cdt.CreateDataSet;
    mydt:=cdt as TDataSet;
    mydt.Open;
    with mydt do
    begin
      dt.Open;
      dt.First;
      while not dt.Eof do
      begin
        Append;
        for a := 0 to dt.FieldDefs.Count - 1 do
        begin
          mydt.Fields[a].ReadOnly:=False;          //这个很重要,务必加上
          mydt.Fields[a].AsString:=dt.Fields[a].Value;
        end;
        mydt.FieldByName('ck').AsString:='False';
        ShowMessage(mydt.FieldByName('mid').Value);  //在这个地方弹出的值属于正常,和数据库中的相符
        Post;
        ShowMessage(mydt.FieldByName('mid').Value);  //在这个地方弹出的值就从1开始,中间就只隔了一个提交,为什么它的值会被改变,是怎么改变的,
        dt.Next;
      end;
    end;
    Result:=mydt;
  end
  else
    Result:=nil;
end;这个方法是将我从数据库中取出的数据增加一个名为“ck”的列,并为其添加值,但是绑定数据后发现mid的值始终是从一开始,和数据库里的mid的值不相符,百思不得其解!