2014-07-07 158 views
0

我有兩個表中的主詳細關係。使用TFDTables。我在TDBGrid中顯示詳細表格Delphi XE6 FireDac Master詳細錯誤

當我調用主表格時,我可以成功創建一個詳細記錄。當我嘗試添加第二個問題時,就開始了。

系統確實將第二條記錄發佈到數據庫,但是當它爲細節網格中的第三條記錄添加新行時,它會使用第二條記錄中的信息填充它。更改此第三記錄生成錯誤:

Project xyz.exe raised exception class EFDDBEngineException with message '[FireDAC][Phys][FB]-312. Exact update affected [2] rows, while [1] was requested'.

此外,當我在Delphi的調試器點擊ok它帶來了:

Project xyz.exe raised exception class EFDException with message '[FireDAC][DApt]-400. Update command updated [2] instead of [1] record. Possible reasons: update table does not have a PK or row identifier, record has been changed/deleted by another user'.

但變化確實會存儲在數據庫中,如果我改變了第二個記錄而網格中的第二條記錄也反映了在第三條記錄中輸入的內容)我意識到這些正在生成,因爲它會嘗試更新不存在的第三條記錄。

當我關閉程序並檢查數據庫時,在錯誤發生前最後一個帖子的保存點處數據庫中只有兩條記錄。當我重新打開應用程序時,網格顯示三條記錄,第二條和第三條記錄相同。

任何幫助或想法將不勝感激。

法利

+0

並不是說它回答了這個問題,但是我可以通過切換到TFDQuery來獲取細節表。 法利 – farley

+0

表是否有PK? – MartynA

+0

嗨馬丁 - 它確實有一個生成的unigue整數。 – farley

回答

0

大概UpdateOptions.KayFields和UpdateOptions.UpdateTableName會幫助你。在KeyFields和TFDTable的UpdateTableName屬性中的表名中分隔PK字段名稱。