Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datensatz ID herausfinden (https://www.delphipraxis.net/145752-datensatz-id-herausfinden.html)

alleinherrscher 7. Jan 2010 19:28

Datenbank: Firebird • Version: 2.1 • Zugriff über: fibplus

Datensatz ID herausfinden
 
Hi@all!

Ich, als Datenbankneuling, muss leider nochmals eure Hilfe in Anspruch nehmen.

Ich habe in einer Datenbank eine Tabelle angelegt, welche einen Primary Key (B_ID) hat, der automatisch beim Anlegen eines neuen Datensatzes inkrementiert wird.

Das Abspeichern der Daten in der Datenbank erfolgt problemlos und B_ID wird von Firebird auch hochgezählt.
Aber wie kann ich nach dem abspreichern der Daten herausfinden, welche B_ID mein neuer Datensatz bekommen hat?

Der Befehl

DataSetB_ID.AsInteger liefert mir immer 0 zurück.

Jemand eine Ahnung, oder soll ich was Code anhängen?

Vielen Dank, euer Michael

s.h.a.r.k 7. Jan 2010 19:31

Re: Datensatz ID herausfinden
 
Du musst entweder die ID nochmals via SELECT laden oder du schaust in der Dokumentation nach, ob es dort, wie in Oracle einen Returning-Befehl gibt.

Edit: Scheinbar gibt es diesen: siehe hier

hoika 8. Jan 2010 06:37

Re: Datensatz ID herausfinden
 
Hallo,

schau dir mal das entsprechende FIBPlus-Beispiel unter

examples\src\FB20InsertReturning


Heiko

RSF 8. Jan 2010 09:31

Re: Datensatz ID herausfinden
 
Warum nicht einfach nach dem Abspeicheren das Feld "B_ID" abfragen?

Delphi-Quellcode:
ShowMessage(IntToStr(tTable.FieldByName('B_ID').AsInteger));

hoika 8. Jan 2010 09:49

Re: Datensatz ID herausfinden
 
Hallo,

#RSF#
nein, die Id wird auf dem Server beim Imsert erzeugt
und normalerweise nicht zurückgegeben.

Unter Paradox klappte das allerdings wirklich so,
aber unter einem SQL-Server normalerweise nicht.

Für Firebird (>=2) gibt es die returning Klausel,
siehe #3


Heiko

MrSpock 8. Jan 2010 10:27

Re: Datensatz ID herausfinden
 
Hallo,

ich mache das Insert über eine StoredProcedure und lasse mir von dieser die ID zurückgeben.

alleinherrscher 8. Jan 2010 10:32

Re: Datensatz ID herausfinden
 
Okaydokay, danke für die Antworten. Werd mal schauen, wie das mit den StoredProcedures bzw. mit dem Returning geht...

DeddyH 8. Jan 2010 10:36

Re: Datensatz ID herausfinden
 
Vielleicht ist dieser Thread hilfreich.

alleinherrscher 8. Jan 2010 10:47

Re: Datensatz ID herausfinden
 
Hey, DeddyH, danke!

Wenn ich jetzt in meinem DataSet die SQLs so ändere, dass da steht:

SQL-Code:
INSERT INTO Produkte
  (ProductID
  ,Bezeichnung)
VALUES
  (:ProductID
  ,:Bezeichnung)
RETURNING Id
Wo kann ich dann unter fibplus auf den Returning-Wert zugreifen? Oder denke ich immer noch falsch?

mkinzler 8. Jan 2010 10:51

Re: Datensatz ID herausfinden
 
Ist
Delphi-Quellcode:
<DataSet>.Params[2]


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:36 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