nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

DBExpress: ID der letzten insert Operation?

Von: Thomas Zangl (usenet@tzis.net) [Profil]
Datum: 19.10.2007 11:41
Message-ID: <ff9u5e$mgc$1@news2.open-news-network.org>
Newsgroup: de.comp.lang.delphi.datenbanken
Hi!

Wenn ich ein "insert" statement mit einem TSQLQuery abfeure, dann haet
ich danach gern die zuletzt eingefuegte ID des auto_increment Felds.

Also normalerweise wuerd ich SELECT LAST_INSERT_ID(); verwenden aber das
liefert kein Ergebnis?

Folgender Code funktioniert nicht:

var
aQry: TSQLQuery;
aSQLMonitor: TSQLMonitor;
begin
aQry := TSQLQuery.Create(nil);
aSQLMonitor := TSQLMonitor.Create(nil);
aSQLMonitor.SQLConnection := FSQLConnection;
try
With aQry do begin
SQLConnection := FSQLConnection;
SQL.Clear;
SQL.Add('SELECT LAST_INSERT_ID() AS ID');
ExecSQL();
result := FieldByName('ID').AsInteger;
end;
finally
FreeAndNil(aQry);
aSQLMonitor.SaveToFile('.\sql_trace_insert.txt');
FreeAndNil(aSQLMonitor);
end;

Da gibts eine Exception bei FieldByName weil die Ergebnismenge leer ist.

"SELECT LAST_INSERT_ID() AS ID" via phpMyAdmin funktioniert und liefert
"0" in der ID Spalte zurueck.

Any ideas? Wie mach ich das richtig? Danke!

Lg,
--
----------------------------------------------------------------
,yours Thomas Zangl, Bakk.rer.soc.oec. - thomas@tzis.net -
- Freelancer - IT Consulting & Software Development -
- Student of Software Development-Economy (Master) -

[ Auf dieses Posting antworten ]

Antworten