我使用Delphi 10与Firedac,我有两个表在主从详细配置,A(文档)和B(DocDetail)。在我的表单中,我有两个分别链接到每个数据源的DBgrid。我想要一个配置,如果可能的话,当我删除主DBGrid中的相应主记录时,删除表DocDetail中的所有记录项。表FDTable组件中是否存在执行此类操作的配置?或者还有其他的方法可以删除master - 删除Delphi端的详细信息? (我知道可以通过约束删除级联在数据库端进行)。谢谢你的帮助。德尔福10-如何删除主人时自动删除详细记录?
回答
你正在寻找的TFDQuery组件上的属性是FetchOptions.DetailCascade和/或FetchOptions.DetailServerCascade
帮助当DetailServerCascade为False,那么FireDAC将客户端 级联的更改发布到数据库。 当DetailCascade为True时,执行客户端级联更改 。所以DetailServerCascade 应该和DetailCascade一起使用。
如果您使用CachedUpdates,您可能还需要一个TFDSchemaAdapter组件。此CentralizedCachedUpdates Sample page列出了使用缓存更新时需要设置组件的所有步骤。
我在一个窗体上使用这个效果很好。将所有设置正确都有点挑剔。基本上,更新中涉及的每个DataSet都需要指向一个通用的TFDSchemaAdapter组件。然后,任何主数据集都需要将其FetchOptions.DetailCascade设置为true,以确保将行从子数据集中正确删除。
嗨,马克。我使用两个MD表格来构建带有Mastr-detail配置的Cahin更新的表单,我遵循[Caching Updates - Firedac]中描述的所有步骤(http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Caching_Updates_(FireDAC) ),但最后它没有工作!我试图删除主记录时出错:[FireDAC] [Phys] [Ora] ORA-0922:完整性约束(JRG.Depto_Emp_FK)违反 - 找到子记录。 Oracle数据库的任何特殊配置? – JRG
不应该有任何特定的数据库,该设置只是控制生成哪些删除SQL语句以及FireDac执行它们的顺序,很难说哪些属性可能会导致错误看看他们,你可以从DFM中为涉及你的问题的四个主要组件添加文本(应该有两个数据集,一个数据源和一个模式适配器),并且确保你正在调用SchemaAdapter上的.ApplyUpdates - 不是个人查询。 –
我发现了错过的步骤:Cacheupdates = true在这两个数据集中。现在它工作!非常感谢 ! – JRG
- 1. 如何在SQL Server 2008中删除所有详细记录时自动删除主记录?
- 2. 德尔福删除FDTable
- 3. 如何确认德尔福FMX Android上记录的删除
- 4. 德尔福自我删除程序
- 5. 如何使用一个sql删除主详细记录?
- 6. 删除德尔福IFDEF的编译器指令自动
- 7. 如何删除父记录时删除所有子记录?
- 8. 德尔福2010年,主详细 - 横在主
- 9. 如何删除加密设置 - 德尔福?
- 10. 德尔福如何完全删除代码完成?
- 11. 如何删除DataContractSerializer详细信息
- 12. 主义 - 删除子记录
- 13. 德尔福Firedac主细节多重
- 14. 德尔福主细节网格组件
- 15. 在Nhibernate日志记录中删除别名的详细信息
- 16. 如何删除联系人详细信息?
- 17. 如何检测网络驱动程序删除编程在德尔福7?
- 18. 自动删除联合数据以及删除记录?
- 19. 如何删除主表,详细表中的行?
- 20. 如何从SplitApp中删除主页面或详细页面?
- 21. 删除记录
- 22. 删除记录
- 23. 删除记录
- 24. 删除记录
- 25. 删除记录
- 26. 如何删除活动记录中已删除行的ID
- 27. 删除父记录时删除子记录
- 28. 删除父表记录时不删除子记录
- 29. 如何删除记录?
- 30. 如何删除“子”记录?
为什么不在数据库端执行? – Sami
嗯,是的,这是可能的。 – Sami
等待......您对@MarkElder答复的评论说您正在使用Oracle。你为什么不在服务器上而是在代码中手动执行此操作?您应该与您的DBA交谈。 –