我在做Midas的分布式系统时碰到了这样一个问题,应用服务器端,做主从表关联,即所谓的巢状数据,将从表数据作为主表的一个字段返回给前端,请问我在客户端怎么动态的接受这个从表数据集,静态的做法是,主表的MCds(TClientDataSet)->Add All Fields->
然后设置从表DCds的的DataSetFiled为主表的数据集字段,但是如果动态的话,我怎么使从表的ClientDataSet的DataSetField获得主表的那个数据集字段。

解决方案 »

  1.   

    难道传说中的Csdn已经日趋没落,已成菜鸟的天下????此问题我已经解决,但是难道Csdn上目前还每人回复???哎,...............
      

  2.   

    TClientDataSet好像有一个DATA属性,
    直接用这个属性应该可以吧。
      

  3.   

    self.ClientDataSet5.Active:=true;
    self.ClientDataSet5.FetchDetails;//主表masterclientdataset4.datasetfield:=tdatasetfield(clientdataset5.FieldByName('adsDetail'));//detailself.ClientDataSet4.Active:=true;//这样不用手动的Fetch All Fields取得主表master
      

  4.   

    推荐
    《Delphi 5.X分布式多层应用系统篇》
      

  5.   

    自帶demo中的adotest
      function GetDetailDataSet: TDataSet;
      var
        I: Integer;
      begin
        Result := nil;
        if (Value = MasterTable) and DetailTable.Active then
           Result := DetailTable
        else if (Value = MasterQuery) and DetailQuery.Active then
          Result := DetailQuery
        else if (Value = MasterProc) and DetailProc.Active then
          Result := DetailProc
        else for I := 0 to Value.Fields.Count - 1 do
          if Value.Fields[I] is TDataSetField then
          begin
            Result := TDataSetField(Value.Fields[I]).NestedDataSet;
            Break;
          end;
      end;