0

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

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

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

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

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

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

但是更改确实存储在数据库中,就好像我更改了第二条记录一样,网格中的第二条记录也反映了第三条记录中输入的内容)我意识到这些正在生成,因为它尝试更新不存在的第三条记录.

当我关闭程序并检查数据库时,在错误之前的最后一个帖子的保存点,数据库中只有两条记录。当我重新打开应用程序时,网格会显示三个记录,第二个和第三个是相同的。

任何帮助或想法将不胜感激。

法利

4

1 回答 1

0

可能 UpdateOptions.KayFields 和 UpdateOptions.UpdateTableName 会帮助你。Spacify PK 字段名称在 KeyFields 中和 TFDTable 的 UpdateTableName 属性中的表名称。

于 2016-07-06T13:24:16.790 回答