DBExpress: ID der letzten insert Operation?

19/10/2007 - 11:41 von Thomas Zangl | Report spam
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) -
 

Lesen sie die antworten

#1 Thomas Zangl
19/10/2007 - 11:45 | Warnen spam
Thomas Zangl wrote:

Hi!

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;



Dummheit siegt! Da fehlt ein "Open". Dafuer kommt jetzt immer "0" als ID
zurueck, was ein Bloedsinn ist. Was ist der korrekte Work-Around hierfuer?

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

Ähnliche fragen