我在做Midas的分布式系统时碰到了这样一个问题,应用服务器端,做主从表关联,即所谓的巢状数据,将从表数据作为主表的一个字段返回给前端,请问我在客户端怎么动态的接受这个从表数据集,静态的做法是,主表的MCds(TClientDataSet)->Add All Fields->
然后设置从表DCds的的DataSetFiled为主表的数据集字段,但是如果动态的话,我怎么使从表的ClientDataSet的DataSetField获得主表的那个数据集字段。
然后设置从表DCds的的DataSetFiled为主表的数据集字段,但是如果动态的话,我怎么使从表的ClientDataSet的DataSetField获得主表的那个数据集字段。
直接用这个属性应该可以吧。
self.ClientDataSet5.FetchDetails;//主表masterclientdataset4.datasetfield:=tdatasetfield(clientdataset5.FieldByName('adsDetail'));//detailself.ClientDataSet4.Active:=true;//这样不用手动的Fetch All Fields取得主表master
《Delphi 5.X分布式多层应用系统篇》
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;