![]() |
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?? |
Re: id vom letzten insert
Gibts keine Property "LastAutoIncVal"? Oder funktioniert vlt. "SELECT LAST_INSERT_ID() FROM Tabelle"?
|
Re: id vom letzten insert
und wie bekomme ich dann den query rückgabewert in die var lastid??
|
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])); |
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! |
Re: id vom letzten insert
Na dann weis es einer Variablen zu.
|
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:
Aufgerufen wird die Funktion wie folgt:
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
Delphi-Quellcode:
var lastId:Integer;
... ... lastId:=GetLastInsertID(ADOQuery1); |
Re: id vom letzten insert
geht es nicht irgendwie anders also mit dieser funktion??
Delphi-Quellcode:
und jetzt einfach das was rauskommt in eine variable! aber wie??
Qry.Close;
Qry.SQL.Text:='SELECT LAST_INSERT_ID()'; Qry.Open; |
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. |
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. |
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