![]() |
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 |
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: ![]() |
Re: Datensatz ID herausfinden
Hallo,
schau dir mal das entsprechende FIBPlus-Beispiel unter examples\src\FB20InsertReturning Heiko |
Re: Datensatz ID herausfinden
Warum nicht einfach nach dem Abspeicheren das Feld "B_ID" abfragen?
Delphi-Quellcode:
ShowMessage(IntToStr(tTable.FieldByName('B_ID').AsInteger));
|
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 |
Re: Datensatz ID herausfinden
Hallo,
ich mache das Insert über eine StoredProcedure und lasse mir von dieser die ID zurückgeben. |
Re: Datensatz ID herausfinden
Okaydokay, danke für die Antworten. Werd mal schauen, wie das mit den StoredProcedures bzw. mit dem Returning geht...
|
Re: Datensatz ID herausfinden
Vielleicht ist
![]() |
Re: Datensatz ID herausfinden
Hey, DeddyH, danke!
Wenn ich jetzt in meinem DataSet die SQLs so ändere, dass da steht:
SQL-Code:
Wo kann ich dann unter fibplus auf den Returning-Wert zugreifen? Oder denke ich immer noch falsch?
INSERT INTO Produkte
(ProductID ,Bezeichnung) VALUES (:ProductID ,:Bezeichnung) RETURNING Id |
Re: Datensatz ID herausfinden
Ist
Delphi-Quellcode:
<DataSet>.Params[2]
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:42 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 by Thomas Breitkreuz