Delphi XE6 FireDac Master Detail错误

时间:2014-07-07 15:39:12

标签: delphi firebird master-detail firedac

我在主细节关系中有两个表。使用TFDTables。我在TDBGrid中显示详细信息表

当我调用主表时,我可以成功创建一个详细记录。当我尝试添加一秒时,问题就开始了。

系统会将第二条记录发布到数据库,但是当它在详细网格中为thrid记录添加新行时,它会使用第二条记录中的信息填充它。更改此第三条记录会产生错误:

  

项目xyz.exe引发了异常类EFDDBEngineException,消息为' [FireDAC] [Phys] [FB] -312。确切的更新会影响[2]行,而[1]则被请求'。

此外,当我在Delphi的调试器中单击“确定”时,它会显示:

  

项目xyz.exe引发了异常类EFDException,消息为' [FireDAC] [DApt] -400。更新命令更新[2]而不是[1]记录。可能的原因:更新表没有PK或行标识符,记录已被其他用户更改/删除'。

但是更改确实存储在数据库中,好像我更改了第二条记录,并且网格中的第二条记录也反映了第三条记录中输入的内容)我意识到这些更改是在尝试更新第三条记录时生成的不存在。

当我关闭程序并检查数据库时,数据库中只有两条记录在错误发生前的最后一篇文章的保存点。当我重新打开应用程序时,网格显示三条记录,第二条和第三条记录完全相同。

非常感谢任何帮助或想法。

法利

1 个答案:

答案 0 :(得分:0)

可能UpdateOptions.KayFields和UpdateOptions.UpdateTableName会对您有所帮助。在KeyFields中使用Spacify PK字段名称,在TFDTable的UpdateTableName属性中使用表名称。