Delphi FireDac-覆盖更新后获取自动递增值
我使用FireDac和Oracle12c数据库以及DelphiSeattle 我有一个服务员Delphi FireDac-覆盖更新后获取自动递增值,delphi,firedac,Delphi,Firedac,我使用FireDac和Oracle12c数据库以及DelphiSeattle 我有一个服务员 EmployeeID - NUMBER GENERATED ALWAYS AS IDENTITY HireDate - Date 在我的表格中,我有一个带有以下语句的FDQuery: select * from Employee 在FDQuery1.Insert和FDQuery1.Post之后,我可以获得生成的EmployeeID,代码如下: FDQuery1.Insert; ... F
EmployeeID - NUMBER GENERATED ALWAYS AS IDENTITY
HireDate - Date
在我的表格中,我有一个带有以下语句的FDQuery:
select * from Employee
在FDQuery1.Insert和FDQuery1.Post之后,我可以获得生成的EmployeeID,代码如下:
FDQuery1.Insert;
...
FDQuery1.Post;
ShowMessage(IntToStr(FDQuery1.FieldByName('EMPLOYEEID').AsInteger));
这很有效
问题:
我现在想覆盖FDQuery发布更新,如下所述:
因此,我覆盖了发布更新:
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:(
无论我在FDUpdateSQL1.InsertSQL中输入什么语句,我甚至可以将其留空。结果总是一样的
(上也有人问这个问题):
尝试使用INSERT…将EmployeeID返回到:NEW_EmployeeID in
您的FDUpdateSQL1.InsertSQL。您还需要安装程序:NEW_EmployeeID
参数如下:
with FDUpdateSQL1.Commands[arInsert].ParamByName('NEW_EmployeeID') do begin
ParamType := ptOutput;
DataType := ftInteger;
end;
很高兴你引起了他的注意。再次感谢你证明了他们论坛的链接。这么多有用的信息。顺便说一句,Dimitry看起来是个很棒的家伙。大概这就是为什么EMBA把他的产品带到了内部;=)
with FDUpdateSQL1.Commands[arInsert].ParamByName('NEW_EmployeeID') do begin
ParamType := ptOutput;
DataType := ftInteger;
end;