Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Wie kommt man an die ID des eingefügten Eintrages (https://www.delphipraxis.net/208439-wie-kommt-man-die-id-des-eingefuegten-eintrages.html)

kagi3624 29. Jul 2021 09:58

Datenbank: PostgreSQL • Version: 9.1.9 • Zugriff über: TZQuery

Wie kommt man an die ID des eingefügten Eintrages
 
Hallo, mit dem SQL Statement

Code:
INSERT INTO MYTABLE (first, second, last) values (val1, val2, val3) returning ID;
kann ich mir die ID des erzeugten Eintrages ausgeben lassen, zumindest zeigt es der DBeaver sofort an. Wie komme ich über TZQuery von Zeos in Delphi an die ID? Die Komponente ist von 2006, vielleicht kann man es damit garnicht?

tewes 29. Jul 2021 10:01

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Typischerweise (z.B. MySQL):
SELECT LAST_INSERT_ID();

kagi3624 29. Jul 2021 10:10

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Zitat:

Zitat von tewes (Beitrag 1492947)
Typischerweise (z.B. MySQL):
SELECT LAST_INSERT_ID();

Aber das ist doch schon in dem insert Statement schon drin mit dem return ID, vielleicht bin ich auch falsch hier in diesem Subforum?

Der schöne Günther 29. Jul 2021 10:11

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Das RETURNING liefert doch ein Ergebnis, genau wie eine SELECT-Query. Bekommst du da nichts zurück?

kagi3624 29. Jul 2021 10:18

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1492949)
Das RETURNING liefert doch ein Ergebnis, genau wie eine SELECT-Query. Bekommst du da nichts zurück?

Also, wenn ich das Statement im Delphi code ausführe mit der TZQuery Komponente, dann bekomme ich den Eintrag auch in die Datenbank, und es gibt auch keine Fehler, ich weiß aber nicht wie ich an die ID des eingefügten Eintrags komme. Ich dachte es ist ja schon irgendwie drin in der Query abgespeichert und ich muss es nur irgendwie abholen. So wenn man normal ein Select statement hat, würde man ja sowas haben:

Code:
i := zQuery.FieldByName('ID').AsInteger;
Hier wird mir aber gesagt, dass so ein Feld nicht existiert nach dem ausführen des Statements.

DeddyH 29. Jul 2021 10:22

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Wie wäre es mal mit etwas mehr Code?

kagi3624 29. Jul 2021 10:26

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Zitat:

Zitat von DeddyH (Beitrag 1492951)
Wie wäre es mal mit etwas mehr Code?

Code:
          aQuery.Close;
          aQuery.SQL.Clear;
          aQuery.SQL.Text := 'INSERT INTO MYTABLE (first, second, last) values (:val1, :val2, :val3) returning ID';
          aQuery.ParamByName('val1').AsInteger := 4;
          aQuery.ParamByName('val2').AsString  := 'bla';
          aQuery.ParamByName('val3').AsInteger := 100;
          aQuery.ExecSQL; //bis hier her funktioniert es

          i := aQuery.FieldByName('ID').AsInteger; // Feld nicht gefunden.

DeddyH 29. Jul 2021 10:47

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Versuch mal
Delphi-Quellcode:
aQuery.Open;
statt
Delphi-Quellcode:
aQuery.ExecSQL;

Ron67 29. Jul 2021 11:08

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Ich kenne das so:

letzteId := dmMain.connection.GetLastAutoGenValue('id');

DeddyH 29. Jul 2021 11:13

AW: Wie kommt man an die ID des eingefügten Eintrages
 
Gibt es das unter ZEOS auch? Ich kenne es so nur bei FireDAC.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 Uhr.
Seite 1 von 3  1 23      

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