AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)
Thema durchsuchen
Ansicht
Themen-Optionen

FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

Ein Thema von Kostas · begonnen am 2. Sep 2022 · letzter Beitrag vom 6. Sep 2022
Antwort Antwort
Seite 1 von 3  1 23      
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:07
Datenbank: Firebird • Version: 3.0 • Zugriff über: FIREDAC
Hallo Zusammen,

ich benötige von einer fdQuery bei onBeforePost den Generator Wert des PKs.
Bei onBeforePost ist der Wert immer -1, -2, -3 bei jedem Insert.

Eingestellt haben ich in der fdQuery:

UpdateOptions.AssignedValues = [uvFetchGeneratorsPoint,uvGeneratorName]
UpdateOptions.AutoIncFields = bankdatenschulungenid
UpdateOptions.FetchGeneratorsPoint = gpImmediate
UpdateOptions.GeneratorName = gen_bankdatenschulungen_id
UpdateOptions.KeyFields = bankdatenschulungenid

Hat jemand eine Idee was ich übersehe?

Gruß Kostas
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#2

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:24
Und bankdatenschulungenid ist auch vom Typ TFDAutoIncField ?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#3

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:29
Und falls ja, wie ist ClientAutoIncrement eingestellt?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:35
Hallo Uwe,

ich hatte der Query die Felder im Feld-Editor NICHT angelegt da ich sie nicht benötige. Habe ich gerade nachgeholt zum testen. Das Feld wird als TFDAutoIncField erkannt. Dennoch wird -1 bei onBeforePost zurückgegeben. Nach dem Post wird das Feld aktualisiert und bekommt den richtigen Wert.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:37
ClientAutoIncrement ist auf true gesetzt.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:43
Mir ist noch etwas aufgefallen:

Ich arbeite wie gesagt ohne die Feldobjekte.
Zum testen habe ich bei AfterIinsert den Wert 1000 übergeben.
Bei OnBeforePost habe ich die 1000.
Nach dem Post wird die 1000 durch den Generatorwert überschrieben über den Trigger in der DB.
Das bedeutet, die Query senden den vorbelegten PK nicht zur DB.


Delphi-Quellcode:
procedure Tfr1.qrBankdatenSchulungAfterInsert(DataSet: TDataSet);
begin
  qrBankdatenSchulung.FieldByName('BANKDATENSCHULUNGENID').AsInteger := 1000;
end;

Delphi-Quellcode:
CREATE OR ALTER trigger bankdatenschulungen_bi for bankdatenschulungen
active before insert position 0
as
begin
  if (new.bankdatenschulungenid is null) then
    new.bankdatenschulungenid = gen_id(gen_bankdatenschulungen_id,1);
end
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#7

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:46
Zitat:
Nach dem Post wird das Feld aktualisiert und bekommt den richtigen Wert.
...und so muß das sein. Wie kann die Query den Wert "erhalten" wenn der vom Trigger nicht generiert wurde?

Deswegen heiß das BeforePost...

Geändert von haentschman ( 2. Sep 2022 um 17:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#8

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:47
ClientAutoIncrement ist auf true gesetzt.
Dann greift die Zählung mit den negativen Werten und erst beim Post werden die tatsächlichen IDs ermittelt. Setz das mal auf False.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#9

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:47
Wie kann die Query den Wert "erhalten" wenn der vom Trigger nicht generiert wurde?
Na, dafür hat er ja den Generatornamen angegeben.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: FireDac den AutoInc value in onBeforePost abfragen. (ist immer -x)

  Alt 2. Sep 2022, 17:51
ClientAutoIncrement ist auf true gesetzt.
Dann greift die Zählung mit den negativen Werten und erst beim Post werden die tatsächlichen IDs ermittelt. Setz das mal auf False.
habe ich gerade, leider ohne Erfolg.
  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 10:50 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