如何在Delphi中查找DataSet是否为主/详细关系中的主服务器?

iMa*_*ari 6 delphi master-detail tdataset

我想创建一个"重复记录"操作,在调用时,它会复制任何TDataSet后代中的当前记录.如何确定数据集是否为主/明细关系的主数据集?随着TClientDataSet这是相当容易的,但我需要用的所有后代使用这个动作TDataSet.

da-*_*oft 10

你应该打电话TDataSet.GetDetailDataSets方法.如果列表不为空,则此数据集是列表中数据集的主数据集.例如:

var
  oDetails: TList;
  lIsMaster: Boolean;
...
  oDetails := TList.Create;
  try
    myDataSet.GetDetailDataSets(oDetails);
    lIsMaster := oDetails.Count > 0;
  finally
    oDetails.Free;
  end;
Run Code Online (Sandbox Code Playgroud)