Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FireDAC-Konzept beim speichern von Pflichtfeldern, die nicht sichtbar sind (https://www.delphipraxis.net/212815-firedac-konzept-beim-speichern-von-pflichtfeldern-die-nicht-sichtbar-sind.html)

juergen 6. Apr 2023 08:18

Datenbank: SQLITE • Version: 3.x • Zugriff über: FireDAC

FireDAC-Konzept beim speichern von Pflichtfeldern, die nicht sichtbar sind
 
Hallo zusammen,

gegeben ein DB-Grid mit Navigator. Sobald man im Grid was ändert/ einfügt wird der Navigator zum speichern ja aktiv.
Nun gibt es in den Tabellen weitere Felder, die im Grid nicht zu sehen sind. Einige der nicht sichtbaren Felder sind in der Datenbank als Pflichtfelder deklariert.
Beispiele:
- AnlegeUser
- Anlegezeit
- AenderUser
- Aenderzeit
usw.

Wenn ich Änderungen speichern will kommt eben die Fehlermeldung von der Datenbank ==>
Zitat:

Feld 'AenderUser' muss einen Wert haben
.

Was ist hier das richtige Konzept bei FireDAC?
Ich habe mir einiges angeschaut, warte jetzt aber erst mal auf eure Expertise ab.

Vielen Dank und einen schönen Tag!

Uwe Raabe 6. Apr 2023 08:40

AW: FireDAC-Konzept beim speichern von Pflichtfeldern, die nicht sichtbar sind
 
Bei einem Edit (Update) sollte in dem Wert ja bereits was drin stehen, damit besteht erstmal kein Handlungsbedarf. Beim Insert/Append werden solche Felder in der Regel im OnNewRecord Event vorbelegt.

juergen 6. Apr 2023 09:17

AW: FireDAC-Konzept beim speichern von Pflichtfeldern, die nicht sichtbar sind
 
Danke Uwe.
Die Fehlermeldung kam, weil ich einige Tabellen gestern erweitert hatte und die Wert nun in falschen Feldern standen :wall::wall:


Ich hatte gehofft, dass es eine Möglichkeit gibt beim Speichern-Button des Navigators an das von FireDAC erstellte SQL-Statement zu kommen und dort meine Aktualisierungen für z.B. "Aenderzeit" vorzunehmen.
So wie ich dich verstanden habe muss ich aber das ganze SQL Statement selbst zusammenstellen und im Event "OnUpdateRecord" der FDQuery zuweisen?

Delphi.Narium 6. Apr 2023 09:53

AW: FireDAC-Konzept beim speichern von Pflichtfeldern, die nicht sichtbar sind
 
Bei ADO, Zeos, ... nutze ich für sowas das BeforePost-Ereignis.
Delphi-Quellcode:
procedure TfmMain.IrgendwasBeforePost(DataSet: TDataSet);
begin
  DataSet.FieldByName('Aenderzeit').AsDateTime := Now;
end;
Damit wird vor jedem Speichern, egal ob per Klick auf den Navigator oder im Quelltext, z. B. per Tabelle.Edit ... Tabelle.Post bzw. Tabelle.Append ... Tabelle.Post, die Aenderzeit auf die aktuelle Uhrzeit gesetzt. Entspricht vom Verhalten her einem Datenbanktrigger, der bei Insert und / oder Update ausgeführt wird.

juergen 6. Apr 2023 10:19

AW: FireDAC-Konzept beim speichern von Pflichtfeldern, die nicht sichtbar sind
 
Vielen Dank,Delphi.Narium. :thumb:
Das ist wohl genau das was ich gesucht habe.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:18 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