Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi id vom letzten insert (https://www.delphipraxis.net/127627-id-vom-letzten-insert.html)

Delphi-Phil 16. Jan 2009 09:52

Datenbank: mysql • Zugriff über: ado

id vom letzten insert
 
Hallo Zusammen und einen guten Morgen,

wie kann ich nach einem inster mit einer ado query die id von dem eingefügten datensatz rausfinden und sie in eine var schreiben??

nuclearping 16. Jan 2009 09:54

Re: id vom letzten insert
 
Gibts keine Property "LastAutoIncVal"? Oder funktioniert vlt. "SELECT LAST_INSERT_ID() FROM Tabelle"?

Delphi-Phil 16. Jan 2009 10:02

Re: id vom letzten insert
 
und wie bekomme ich dann den query rückgabewert in die var lastid??

Gollum 16. Jan 2009 10:04

Re: id vom letzten insert
 
Hallo,

nuclearping hat Dir fast die korrekte Antwort gegeben.

Nach dem Einfügen eines neuen Datensatzes musst Du folgendes tun:
Delphi-Quellcode:
ADOQuery1.Close;
ADOQuery1.SQL.Text:='SELECT LAST_INSERT_ID()';
ADOQuery1.Open;
ShowMessage(Format('Letzte eingefügte ID: %d', [ADOQuery1.Fields[0].AsInteger]));

Delphi-Phil 16. Jan 2009 10:20

Re: id vom letzten insert
 
so geht es jetzt! Danke!

jetzt lässt du es aber in einer Message anzeigen ich brauche es aber in einer Variable!

Luckie 16. Jan 2009 10:25

Re: id vom letzten insert
 
Na dann weis es einer Variablen zu.

Gollum 16. Jan 2009 10:25

Re: id vom letzten insert
 
Hallo,

wo ist jetzt das Problem? Ich denke Du willst programmieren? Ein bisschen Abstraktion gehört nun mal zum Geschäft.

Delphi-Quellcode:
function GetLastInsertID(aQry:TADOQuery):Integer;
begin
  with aQry do
  begin
    Close();
    SQL.Text:='SELECT LAST_INSERT_ID()';
    Open();
    Result:=Fields[0].AsInteger;
  end; // with aQry
end; // LastInsertID
Aufgerufen wird die Funktion wie folgt:
Delphi-Quellcode:
var lastId:Integer;
...
...
lastId:=GetLastInsertID(ADOQuery1);

Delphi-Phil 16. Jan 2009 10:56

Re: id vom letzten insert
 
geht es nicht irgendwie anders also mit dieser funktion??

Delphi-Quellcode:
Qry.Close;
Qry.SQL.Text:='SELECT LAST_INSERT_ID()';
Qry.Open;
und jetzt einfach das was rauskommt in eine variable! aber wie??

Gollum 16. Jan 2009 11:00

Re: id vom letzten insert
 
Hallo,

kannst Du nicht lesen?
Ich habe Dir doch die Lösung in meinem (vor)letzten Eintrag als fertige Funktion gepostet.

QuickAndDirty 16. Jan 2009 11:11

Re: id vom letzten insert
 
Sicher das das geht?

Wenn
1. 2 User nahezu gleichzeitig einen Datensatz einfügen.
2. Einfügen beider Datensätze beendet ist.
3. Und dann beide lastID Abfragen

bekommen dann beide den von ihnen selbst eingefügt Datensatz???
Ich bezweifle das etwas.
Es sei denn macht das Einfügen und das LastID in einer Transaction.

In oracle gibts ne Lösung für das Problem.(So habe ich mir das mal erzählen lassen)
Man kann dort einen "Token" hohlen dieser ist dann reserviert
Wenn jetzt ein anderer User einfügt passiert das quasi auf der ID nach dem Token.
Ich kann dann auf den so eben geholten "Token"(ist wohl der ID wert) einfügen und
auch in weiteren SQLs auf den von mir eingefügten Datensatz über den Token bezug
nehmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:56 Uhr.
Seite 1 von 4  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz