测试使用了官方的范例文件(主表: orders.xml; 从表: items.xml).
![](https://images.cnblogs.com/cnblogs_com/del/161706/o_10020603.png)
//先在窗体上添加: //ClientDataSet1、DataSource1、DBGrid1、ClientDataSet2、DataSource2、DBGrid2; 然后: procedure TForm1.FormCreate(Sender: TObject); begin { 关联数据集 } DBGrid1.DataSource := DataSource1; DataSource1.DataSet := ClientDataSet1; DBGrid2.DataSource := DataSource2; DataSource2.DataSet := ClientDataSet2; { 载入范例文件 } ChDir(GetEnvironmentVariable('COMMONPROGRAMFILES') + '\CodeGear Shared\Data\'); ClientDataSet1.LoadFromFile('orders.xml'); ClientDataSet2.LoadFromFile('items.xml'); { 设定主从表 } ClientDataSet2.MasterSource := DataSource1; ClientDataSet2.MasterFields := 'OrderNo'; { 多个字段时用分号隔开 } end;
如果在设计时完成, 也主要是设置 MasterSource、MasterFields 两个属性, 下面是设计时的一个截图:
![](https://images.cnblogs.com/cnblogs_com/del/161706/o_10020604.png)