Delphi 10 - 删除master时如何自动删除详细记录?

时间:2017-09-26 18:04:50

标签: delphi firedac

我正在使用带有Firedac的Delphi 10,我在Master-Detail配置中有两个表,A(Document)和B(DocDetail)。在我的表单中,我有两个DBgrids,分别链接到每个数据源。我想要一个配置,如果可能的话,删除主DBgrid中相应的Master记录时删除表DocDetail中的所有记录项。表FDTable组件中是否有任何配置执行此类操作?还是有其他方法可以删除master - 在Delphi端删除详细信息? (我知道可以通过约束删除级联在数据库端进行)。谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

您在TFDQuery组件上寻找的属性是 FetchOptions.DetailCascade 和/或 FetchOptions.DetailServerCascade

来自DetailServerCascade

的帮助
  

当DetailServerCascade为False时,FireDAC会在客户端发布   级联对数据库的更改。 客户端级联更改   当DetailCascade为True时执行。 So DetailServerCascade   应与DetailCascade一起使用。

如果您使用的是CachedUpdates,则可能还需要TFDSchemaAdapter组件。此CentralizedCachedUpdates Sample page列出了使用缓存更新时设置组件所需的所有步骤。

我在一张表格上使用它,效果很好。让它全部正确设置有点挑剔。基本上,更新中涉及的每个DataSet都需要指向一个常见的TFDSchemaAdapter组件。然后,任何主数据集都需要将其FetchOptions.DetailCascade设置为true,以确保从子数据集中正确删除行