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

643 Views Asked by At

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.

1

There are 1 best solutions below

0
On BEST ANSWER

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;