AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datensatz ID herausfinden
Thema durchsuchen
Ansicht
Themen-Optionen

Datensatz ID herausfinden

Ein Thema von alleinherrscher · begonnen am 7. Jan 2010 · letzter Beitrag vom 9. Jan 2010
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#1

Datensatz ID herausfinden

  Alt 7. Jan 2010, 19:28
Datenbank: Firebird • Version: 2.1 • Zugriff über: fibplus
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
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: Datensatz ID herausfinden

  Alt 7. Jan 2010, 19:31
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
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 06:37
Hallo,

schau dir mal das entsprechende FIBPlus-Beispiel unter

examples\src\FB20InsertReturning


Heiko
Heiko
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
150 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 09:31
Warum nicht einfach nach dem Abspeicheren das Feld "B_ID" abfragen?

ShowMessage(IntToStr(tTable.FieldByName('B_ID').AsInteger));
Ronald
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 09:49
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 10:27
Hallo,

ich mache das Insert über eine StoredProcedure und lasse mir von dieser die ID zurückgeben.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 10:32
Okaydokay, danke für die Antworten. Werd mal schauen, wie das mit den StoredProcedures bzw. mit dem Returning geht...
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 10:36
Vielleicht ist dieser Thread hilfreich.
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
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 10:47
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?
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Datensatz ID herausfinden

  Alt 8. Jan 2010, 10:51
Ist <DataSet>.Params[2]
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:33 Uhr.
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