请教各位一个问题:用ClientDataSet建立一个内存表,保存好数据.对此内存表的修改,再用DELTA显示出来.
代码如下:
建内存表,并显示在DBGRID1上.
procedure CreateMTable;
var
   mF:TFieldDef;
   i:integer;
begin
  try
     self.ClientDataSet1.FieldDefs.Clear;
     Mf:=self.ClientDataSet1.FieldDefs.AddFieldDef;
     mf.Name:='MF';
     mf.DataType:=ftString;
     mf.Size:=10;      
     self.ClientDataSet1.CreateDataSet;     for i:=0 to 4 do
     begin
        ClientDataSet1.Append;
        mClientDataSet.Fields[0].Value:='ABCD'+inttostr(i);
        ClientDataSet1.post;
     end;
     DataSource1.DataSet:=ClientDataSet1;
     DBGrid1.DataSource:=DataSource1;
  except
     exit;
  end;
end;把ClientDataSet1的DELTA付给ClientDataSet2,并显示在DBGrid上.
procedure TForm1.Button5Click(Sender: TObject);
begin
   self.ClientDataSet2.Data:=self.ClientDataSet1.Delta;
   DataSource2.DataSet:=ClientDataSet2;
   self.DBGrid1.DataSource:=TDataSource2;
end;运行,
在DBGride1改动一下,再执行Button5Click把DELTA付给ClientDataSet2,结果只是显示4行记录,并没有修改前后的对比记录,
请教各位代码哪里错了,或是自己建的内存表不扶持这个功能???
OK马上给分..在线等...

解决方案 »

  1.   

    直接把ClientDataSet1.delta给ClientDataSet2.Data就可以了. 不用其它的.
      

  2.   

    呵.没看明白意思.前面的说错了.结果只是显示4行记录,并没有修改前后的对比记录,//--------
    是这样.
    对于ClientDataSet1来说, 新增的4条记录就是Delta的数据. 不管这4条记录你再来回的怎么更改. 都不会再更新Delta了. (也就是说Delta只有这新增的4条. 除非你再新增几个. 那么Delta就会再中几条.
      

  3.   


    做了个测试,没发现有什么问题procedure TFormMain.FormCreate(Sender: TObject);
    begin
      self.ClientDataSet1.FieldDefs.Add('Name',ftString,50);
      self.ClientDataSet1.FieldDefs.Add('Age',ftString,50);
      self.ClientDataSet1.CreateDataSet;  self.ClientDataSet1.AppendRecord(['100','100']);
      self.ClientDataSet1.AppendRecord(['100','100']);
      self.ClientDataSet1.AppendRecord(['100','100']);
      self.ClientDataSet1.AppendRecord(['100','100']);
      self.ClientDataSet1.AppendRecord(['100','100']);
      self.ClientDataSet1.AppendRecord(['100','100']);
      self.DataSource1.DataSet:=self.ClientDataSet1;
    end;
    procedure TFormMain.BitBtn1Click(Sender: TObject);
    begin
    self.ClientDataSet1.AppendRecord(['1001','100']);//添加新纪录
    self.ClientDataSet2.Data:=self.ClientDataSet1.Delta;
    self.DataSource1.DataSet:=self.ClientDataSet2;
    end;
      

  4.   

    TO:hongqi162 
    测试结果跟我的哪个是一样的.
    并没有数据的修改前后对比.
      

  5.   

    新增完数据后.记得合并一个日志.  再在DBGrid中改数据.  再赋值delta就行了.  不合并日志. 改一万次还是没有你想到的结果的.