Wäre ein zentrales BeforePost-Event auf Programmebene eventuell eine Alternative? Das wäre zudem noch datenbankunabhängig.
Wie kann ich die realisieren?
Hängt von deiner Arbeitsweise ab. Wenn z.B. alle Queries statisch in Datenmodulen liegen, kann man diese von einem gemeinsamen Vorfahren ableiten, der sich in das
BeforePost-Event reinhängt. Alternativ wäre auch eine Interposer-Class denkbar, die das
DoBeforePost überschreibt. Die
Unit könnte in etwas so aussehen und müsste dann in den gewünschten Fällen in der Uses-Anweisung hinter
FireDAC.Comp.Client aufgeführt werden. Das funktioniert allerdings nicht bei expliziten UPDATE Queries, sondern nur bei Verwendung der DataSet-Methoden
Insert,
Edit und
Post.
Delphi-Quellcode:
unit FDQueryInterposer;
interface
type
TFDQuery =
class(FireDAC.Comp.Client.TFDQuery)
protected
procedure DoBeforePost;
override;
end;
implementation
procedure TFDQuery.DoBeforePost;
begin
{ hier bei Bedarf die entsprechenden Felder setzen }
inherited;
end;
end.