Search code examples
delphimaster-detailtdataset

How can I find if a DataSet is the master in a master/detail relationship in Delphi?


I want to create a "Duplicate Record" action which when invoked, duplicates current record in any TDataSet descendant. How can I find out if the dataset is the master dataset of a master/detail relationship? With TClientDataSet it's rather easy, but I need this action to be used with all descendants of TDataSet.


Solution

  • You should call TDataSet.GetDetailDataSets method. If the list is not empty, then this dataset is the master dataset for the datasets in the list. For example:

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