我使用FireDac與Oracle 12c數據庫和Delphi西雅圖。Delphi FireDac - 在覆蓋帖子更新後獲得自動遞增的值
我有一個Employee表
EmployeeID - NUMBER GENERATED ALWAYS AS IDENTITY
HireDate - Date
在我的形式,我有一個FDQuery用下面的語句:
select * from Employee
後FDQuery1.Insert和FDQuery1.Post我可以用產生的僱員以下代碼:
FDQuery1.Insert;
...
FDQuery1.Post;
ShowMessage(IntToStr(FDQuery1.FieldByName('EMPLOYEEID').AsInteger));
這很好。
問題:
我現在想覆蓋FDQuery張貼喜歡這裏描述的更新: http://docwiki.embarcadero.com/RADStudio/XE8/en/Overriding_Posting_Updates_%28FireDAC%29
所以我重寫發佈更新:
procedure TForm3.FDQuery1UpdateRecord(ASender: TDataSet;
ARequest: TFDUpdateRequest; var AAction: TFDErrorAction;
AOptions: TFDUpdateRowOptions);
begin
FDUpdateSQL1.ConnectionName := FDQuery1.ConnectionName;
FDUpdateSQL1.DataSet := FDQuery1;
FDUpdateSQL1.Apply(ARequest, AAction, AOptions);
AAction := eaApplied;
end;
但現在EMPLOYEEID顯示爲-1 :(
ShowMessage(IntToStr(FDQuery1.FieldByName('EMPLOYEEID').AsInteger));
無論我在FDUpdateSQL1.InsertSQL中輸入什麼語句都無關緊要。我甚至可以把它留空。結果總是一樣的。
(這也被要求在https://forums.embarcadero.com/thread.jspa?messageID=778896򾊐)
很高興你得到了他的關注。 – MartynA
再次感謝您證明與他們論壇的鏈接。非常有用的信息。順便說一句Dimitry看起來像一個很棒的傢伙。 – Tommy
大概這就是爲什麼EMBA將他的產品帶入內部; =) – MartynA