himitsu meint (zu recht), dass das
SQL abgeändert werden muss:
Delphi-Quellcode:
qMain.SQL.Text := 'SELECT LAST_INSERT_ROWID()';
qMain.Open;
if qMain.RecordCount > 0 then begin
Die globale Funktion liefert die ID auch ohne Angabe einer Tabelle.
Das bei den dbExpress-Prg. genannte Verhalten ist eigentlich eher der Normalfall.
Nach einem Insert muss man den Datensatz lesen, um die dann aktuellen Werte zu erhalten. Das Programm kennt nur die Werte, die es selbst mit dem Insert in die Datenbank schreibt, es kennt aber nicht die Werte, die dann (auf welchem Weg auch immer) von der Datenbank vergeben werden.
Das Lesen geht auch ohne einen Programmneustart.
Man muss halt die Routine, mit der man die Daten beim Programmstart liest, erneut aufrufen oder eine andere Leseroutine implementieren.