AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Problem mit Generator
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit Generator

Ein Thema von TurboMagic · begonnen am 4. Apr 2024 · letzter Beitrag vom 5. Apr 2024
Antwort Antwort
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
695 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Problem mit Generator

  Alt 5. Apr 2024, 06:39
mal ganz doof gefragt:

warum machst du in deiner AddEntry Routine den extrem seltsamen Umweg über ein konstantes
Select Sql und überlässt dann den Dataset Komponenten da irgendwas mit Append zu machen?

Warum umständlich wenn man es auch einfach über einen Insert Befehl gehen würde ...

(und der könnte dann über returning auch den gerade generierten wert vom Generator
zurückmelden, so das du den auch in deinem Dataset zur weiteren Identifikation des
Datensatzes haben kannst.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
Firebird 5 Update und Know-how Workshop – 28.8.-29.08.2025 64546 Mörfelden - Walldorf
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#2

AW: Problem mit Generator

  Alt 5. Apr 2024, 07:37
mal ganz doof gefragt:

warum machst du in deiner AddEntry Routine den extrem seltsamen Umweg über ein konstantes
Select Sql und überlässt dann den Dataset Komponenten da irgendwas mit Append zu machen?

Warum umständlich wenn man es auch einfach über einen Insert Befehl gehen würde ...

(und der könnte dann über returning auch den gerade generierten wert vom Generator
zurückmelden, so das du den auch in deinem Dataset zur weiteren Identifikation des
Datensatzes haben kannst.
Danke für den Hinweis. Ich glaube mich jedoch zu erinnern, dass ich diese Art der Umsetzung
auf Basis einer Forumsdiskussion hier gemacht habe. Das funktioniert ja auch grundsätzlich.
Nur irgendwie im Ablauf des Update Mechanismus scheint es ein Problem zu geben.
  Mit Zitat antworten Zitat
Frickler

Registriert seit: 6. Mär 2007
Ort: Osnabrück
622 Beiträge
 
Delphi XE6 Enterprise
 
#3

AW: Problem mit Generator

  Alt 5. Apr 2024, 09:19
Ich glaube mich jedoch zu erinnern, dass ich diese Art der Umsetzung
auf Basis einer Forumsdiskussion hier gemacht habe.
"Diese Art der Umsetzung" wurde früher gerne verwendet, weil sie kompatibel ist zum "TTable"-Ansatz der BDE und damit zu Datenbanken wie Paradox oder dBase (navigierender Zugriff oder ISAM).

P.S.: ich meine, es gab eine Änderung bei FB4, was den Startwert eines Generators betrifft. Denn das Problem betrifft - wenn ich das richtig sehe - immer den letzten Datensatz. Setz doch probehalber den Startwert auf "Value + 1" und schau, was passiert.

Geändert von Frickler ( 5. Apr 2024 um 09:32 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.555 Beiträge
 
Delphi 7 Professional
 
#4

AW: Problem mit Generator

  Alt 5. Apr 2024, 09:59
Oder statt Query.ExecSQL('ALTER SEQUENCE ' + GeneratorName + ' RESTART WITH ' + Value.ToString); für Value.ToString select Max(id) + 1 from tabelle nehmen.

Oder, da es ja bei diesem Update ein grundsätzliches Problem ist:
Value := 1 + GetCurrentGeneratorValue(FGeneratorReadQuery, Generator);
Oder hier einfach den nächsten Generatorwert auslesen, also sinngemäß:
Value := GEN_ID(GeneratorName, 1);

Das Problem scheint zu sein, dass in der "alten" Datenbank der Wert des Generators der zuletzt vergebene Wert zu sein scheint, während die "neue" Datenbank diesen Wert als den nächsten zu vergebenden Wert betrachtet. Beim ersten Lesen des Generatorwertes kracht es daher einmalig. Danach ist der Generatorwert dann "höher" als die letzte ID und somit ist der Fehler (unelegant) behoben.

Grob formuliert:

Alte Datenbank erhöht den Wert des Generators und gibt ihn dann aus.
Neue Datenbank gibt den Wert des Generators aus und erhöht ihn dann.

Daraus resultiert die einmalig "doppelte" Ausgabe eines Wertes, was dann nach einem einmaligen Fehler "korrigiert" erscheint.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#5

AW: Problem mit Generator

  Alt 5. Apr 2024, 12:33
Hallo,

danke an alle für den Tipp mit Firebird 4.0.
Das hab' ich damals scheinbar in der Änderungshistorie überlesen.
Ich schaue mir diese und eure Lösungsvorschläge in der nächsten Programmiersitzung
für die betreffende Anwendung gleich an.

Grüße

TurboMagic
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#6

AW: Problem mit Generator

  Alt 5. Apr 2024, 15:59
Hallo,

ok, ich hab' jetzt schon die Stelle in den FB 4.0.4 relase notes gefunden.
Das Verhalten von Sequences wurde tatsächlich abgeändert.

Ich schau' mir jetzt an, wie ich damit umgehe.

Grüße
TurboMagic
  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 01:37 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