AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Interbase-Tabelle mit AutoInc-Feld nach Post refreshen?
Thema durchsuchen
Ansicht
Themen-Optionen

Interbase-Tabelle mit AutoInc-Feld nach Post refreshen?

Ein Thema von Stevie · begonnen am 4. Okt 2004 · letzter Beitrag vom 4. Okt 2004
Antwort Antwort
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Interbase-Tabelle mit AutoInc-Feld nach Post refreshen?

  Alt 4. Okt 2004, 14:39
Hi Leute,

ich habe eine Firebird 1.5.1 Datenbank mit einer Tabelle, die als PrimaryKey ein AutoInc-Feld hat. Dieses wird über einen BeforeInsert-Trigger und einen Generator gefüllt. Wenn ich über die TIBTable einen neuen Datensatz einfüge, will ich aber die erstellte ID zurückerhalten. Ich habe ForcedRefresh auf True gesetzt, aber ich erhalte den Wert für das AutoInc-Feld nicht zurück. Der Wert muss auf dem Server durch den Trigger erzeugt werden! Ich hab es auch schon mit TIBDataSet und der Eigenschaft RefreshSQL ausprobiert, aber der Datensatz muss anhand der erstellten ID identifiziert werden, aber die ist ja noch nicht bekannt, deshalb würde in der WHERE-Klausel ja auf NULL geprüft, und dann ist der Wert ja schon drin... Wie kann ich es bewerkstelligen, dass ich den Wert zurückerhalte?
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

Re: Interbase-Tabelle mit AutoInc-Feld nach Post refreshen?

  Alt 4. Okt 2004, 14:55
Hallo Stevie,

das Thema hatten wir schon einmal hier.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#3

Re: Interbase-Tabelle mit AutoInc-Feld nach Post refreshen?

  Alt 4. Okt 2004, 14:59
Hallo Stevie,

ich glaube bei den IBX-Komponenten geht das nur wenn du dir die neue ID selbst per Generator erzeugst und im AfterInsert-Ereignis zuweist, bin mir aber nicht ganz sicher.

Ich selbst nehme FIBPlus-Komponenten für den Zugriff auf Interbase/Firebird. Die kriegen das ganz ohne Probleme gebacken. Einfach Generator dem Feld zuweisen, dem Dataset noch sagen wann er sich den wert holen soll (nie, vorm anlegen oder vorm speichern) und man hat keinerlei Refresh-Probleme.
Gruß
UweR
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.027 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Interbase-Tabelle mit AutoInc-Feld nach Post refreshen?

  Alt 4. Okt 2004, 15:59
@MrSpock: Eigentlich bin ich ja auch Verfechter der Suchfunktion, aber da ist mir wohl einer durch die Lappen gegangen...
Hmm, irgendwie kann ich mich aber nicht mit dem Gedanken anfreunden, ne Prozedur zu basteln, die das mit dem Index erledigt...
Ich hab jetzt RefreshSQL so definiert (ich vermute einfach mal, dass zwischen dem insert und dem refresh kein anderes insert sein kann, oder!?):
SQL-Code:
SELECT *
FROM tabelle
WHERE
  id = COALESCE(:id, GEN_ID(tabelle_seq, 0))
@UweR: Sorry, ich bekomm's nicht hin... Irgendwie find ich die FIBPlus-Kompos auch nicht so toll, sollen die besser sein, als die IB-Kompos?
P.S. Sorry, ich hatte das Design-Package nicht installiert, deshalb fehlten die ganzen Editoren...
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
UweR

Registriert seit: 15. Mär 2004
Ort: Bad Marienberg
219 Beiträge
 
Delphi 7 Professional
 
#5

Re: Interbase-Tabelle mit AutoInc-Feld nach Post refreshen?

  Alt 4. Okt 2004, 20:17
Hallo Stevie,

die FIBPlus-Komponenten haben meiner Meinung nach einige Vorteile:

Du kriegst die AutoInkrement-Felder ohne Verrenkungen hin.

Du kannst dir clientseitig noch Filter setzen und umsortieren ohne den SQL-server zu bemühen.

Du hast innerhalb eines DataSet's getrennte Transaktionen für SELECT und INSERT/UPDATE

Sie haben aber leider auch einen großen Nachteil. Sie kosten halt entweder Schotter oder laufen außerhalb der IDE nur mit einem dezenten Hinweis.
Gruß
UweR
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:28 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