现有两数据表A和B,A含B的所有字段,B作为A的数据模板.在表A中添加记录时,如何将已有B的数据添加至表A中?

解决方案 »

  1.   

    用CDSA.Close(cdsb);
    两个对应都同一份dataset上,修改就可同步了
      

  2.   

    CDSA.Close(cdsb);这是什么意思?
    能否说得具体点?
      

  3.   

    clientdataset1.data:=clientdataset2.data;这样做的前提是两个clientdataset都是活动的,并且它们的字段相同。
      

  4.   

    to eboywy:
      不行啊,由于更新是由Delta属性决定的,这样不能保存到表中吧.
      况且我也试过,我使得B表字段与A字段一样,这样赋值A还会出现乱字符,
    我用的是ClientDataSetA.AppendData(ClientDataSetB.Data,False);
      

  5.   

    试过CloneCursor方法吗,可以在两个数据集之间进行数据共享
    示例
    dsQuery.CloneCursor(Source,True);//Source为被克隆的数据集
      

  6.   

    如果上述方法不行地话就使用SQL直接更新或编写触发器搞定它
      

  7.   

    克隆只有两个数据结构相同时才用。要是结构不一样,还是直接for i:.....吧。:)
      

  8.   

    添加的时候根据输入的信息从B中找出再赋给A吧,这个情况用Clone方法不行的
      

  9.   

    一点思路:
    A beforepost : 
    begin
      定位B(使用Locate or Lookup);
      A.FieldByName('').AsString := A.FieldByName('').AsString; //Lookup可直接取值
    end;
      

  10.   

    将A的连接源断掉,然后直接指定A.data := B.data
      

  11.   

    1、直接把赋值:dataset1.data:=dataset2.data
    2、CloneCursor方法:dataset1.CloneCursor(Source,True)
      

  12.   

    自己继承一个ClientDataSet,
    override assign方法啊.
      

  13.   

    一般用克隆是比较好的方法,因为它不会影响当前CDS的Record指针  ClientDataSet1.CloneCursor(ClientDataSet2,True);
      

  14.   

    clientdataset1.data:=clientdataset2.data;
      

  15.   

    ClientDataSet10.AppendData(ClientDataSet1.Data,false);
      

  16.   

    ClientDataSet10.AppendData(ClientDataSet1.Data,false);  ClientDataSet10.Providername:= 一个空的DataSetProvider
      ClientDataSet10.remoteserver:= ClientDataSet1的remoteserver值
      

  17.   

    ClientDataSet10.AppendData(ClientDataSet1.Data,false);
      

  18.   

    ClientDataSet1.Data:=ClientDataSet2.Data
    李维说的
      

  19.   

    ClientDataSet1.Data:=ClientDataSet2.DataClientDataSet10.AppendData(ClientDataSet1.Data,false);
      

  20.   

    让两个ClientDataSet使用同一个DataSetProvider
      

  21.   

    上说的都有问题,如果你Clientdataset中有些字段是字典表,就不行了,因为大家都没有试,Clientdataset1 := TClientDataSet(Clientdataset2),这就完全是一样了;