AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Wie kommt man an die ID des eingefügten Eintrages
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kommt man an die ID des eingefügten Eintrages

Ein Thema von kagi3624 · begonnen am 29. Jul 2021 · letzter Beitrag vom 31. Jul 2021
Antwort Antwort
Seite 1 von 2  1 2      
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

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

  Alt 29. Jul 2021, 10:18
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 29. Jul 2021, 10:22
Wie wäre es mal mit etwas mehr Code?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#3

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

  Alt 29. Jul 2021, 10:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 29. Jul 2021, 10:47
Versuch mal
aQuery.Open; statt
aQuery.ExecSQL;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ron67

Registriert seit: 10. Sep 2018
Ort: Großraum Nürnberg
13 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 29. Jul 2021, 11:08
Ich kenne das so:

letzteId := dmMain.connection.GetLastAutoGenValue('id');
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 29. Jul 2021, 11:13
Gibt es das unter ZEOS auch? Ich kenne es so nur bei FireDAC.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#7

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

  Alt 29. Jul 2021, 11:30
Versuch mal
aQuery.Open; statt
aQuery.ExecSQL;
THX! Hat funktioniert!

Gibt es das unter ZEOS auch? Ich kenne es so nur bei FireDAC.
Zumindest bei meiner Komponente ging es nicht.

Geändert von kagi3624 (29. Jul 2021 um 11:33 Uhr)
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#8

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

  Alt 29. Jul 2021, 13:39
Insert Befehle können mehrere Zeilen anlegen und Trigger dann noch mehr.
Es ist immer dann interessant, wenn LAST_INSERT_ID zum Einsatz kommt.
Zum einen wir ja nur eine ID zurück geliefert, auch wenn mehrere Datensätze eingetragen worden sind,
Zum anderen welche ID die vom Hauptdatensatz oder ggf. die letzte ID welche ein Trigger angelegt hat.

Viele SQLs sind um OUTPUT erweitert worden, so dass ein INSERT auch eine Tabelle zurück geben kann.

In PG wird das mit "RETURNING" erreicht:
https://www.postgresql.org/docs/9.5/sql-insert.html
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
752 Beiträge
 
Delphi 10.3 Rio
 
#9

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

  Alt 29. Jul 2021, 19:02
Im Regelfall sollte man sein Insert doch so gestalten können das man danach mit einem Select in der Lage ist seinen Datensatz zu finden.
Zudem kennt man seine DB ja wohl so weit das man weis was beim Insert läuft und wieviele Datensätze erzeugt werden.
LastAutoInc ist zum Beispiel auch in FireDac nicht für alle DB implementiert die angesprochen werden können.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#10

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

  Alt 30. Jul 2021, 16:24
Es funktioniert doch!

Versuch mal
aQuery.Open; statt
aQuery.ExecSQL;
THX! Hat funktioniert!
..
Returning ist genau richtig dafür.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:19 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