Der Kernpunkt ist hier
UpdateOptions.FetchGeneratorsPoint = gpImmediate
. Das sorgt laut Dokumentation dafür, dass die ID schon beim Insert bzw. Append ermittelt wird.
...
Code:
Mode Description
gpNone Do not fetch generator values.
gpImmediate Fetch values right after starting to append a new record. Normally, this is the value for the TDataSet.Insert or Append methods.
gpDeferred Fetch values right before posting a new record to a database. Normally, this is the value for the TDataSet.Post or ApplyUpdates methods.
[/QUOTE]
Die Doku habe ich gelesen und so eingestellt, meine ich zumindest. Ich hätte erwartet dass bei onBeforePost den Generatorwert bereits gesetzt ist. Genau das ist nicht der Fall. Auch interessant ist, dass das PK Feld, auch wenn ich den Wert setze, in der
DB immer als null übertragen wird. Deshalb feuert der Trigger der
DB und setzt den PK Wert. Ich habe ein Demo Programm erstelle auf die gleiche
DB und die Connection über IBObjects erstellt. Hier ist der Generator des PKs bei OnBeforePost vorhanden und auch so zur
DB übertragen. Es liegt also nicht an der
DB sondern an irgend einer Einstellung in FireDac. Ich verwende übrigens Delphi 11.1