我正在使用带有Firedac的Delphi 10,我在Master-Detail配置中有两个表,A(Document)和B(DocDetail)。在我的表单中,我有两个DBgrids,分别链接到每个数据源。我想要一个配置,如果可能的话,删除主DBgrid中相应的Master记录时删除表DocDetail中的所有记录项。表FDTable组件中是否有任何配置执行此类操作?还是有其他方法可以删除master - 在Delphi端删除详细信息? (我知道可以通过约束删除级联在数据库端进行)。谢谢你的帮助。
答案 0 :(得分:3)
您在TFDQuery组件上寻找的属性是 FetchOptions.DetailCascade 和/或 FetchOptions.DetailServerCascade
的帮助当DetailServerCascade为False时,FireDAC会在客户端发布 级联对数据库的更改。 客户端级联更改 当DetailCascade为True时执行。 So DetailServerCascade 应与DetailCascade一起使用。
如果您使用的是CachedUpdates,则可能还需要TFDSchemaAdapter组件。此CentralizedCachedUpdates Sample page列出了使用缓存更新时设置组件所需的所有步骤。
我在一张表格上使用它,效果很好。让它全部正确设置有点挑剔。基本上,更新中涉及的每个DataSet都需要指向一个常见的TFDSchemaAdapter组件。然后,任何主数据集都需要将其FetchOptions.DetailCascade设置为true,以确保从子数据集中正确删除行