Einzelnen Beitrag anzeigen

Zwirbel

Registriert seit: 17. Aug 2009
64 Beiträge
 
Delphi 10 Seattle Ultimate
 
#1

Trigger -> Änderung in einem DBGrid

  Alt 8. Aug 2016, 14:44
Datenbank: Firbird • Version: 3 • Zugriff über: Seattle 10
Hallo,

für alle Tabellen unserer Datenbank gibt es Felder wie:
Code:
  "Created" TIMESTAMP NOT NULL,
  "Modified" TIMESTAMP NOT NULL,
  "CreatedBy" SMALLINT NOT NULL,
  "ModifiedBy" SMALLINT NOT NULL,
Nun habe ich für diese Felder Trigger eingerichtet die dafür sorgen, dass die entsprechenden Felder je nach Situation angepasst werden.

Hier die Trigger:
Delphi-Quellcode:
/* Trigger für Defaultwerte von Created, Modified, CreatedBy und ModifiedBy */
SET TERM ^;
CREATE OR ALTER TRIGGER TR_TA_TimeTableList_Created_BI FOR TA_TimeTableList ACTIVE BEFORE INSERT
AS BEGIN
  IF (NEW."Created" IS NULL) THEN NEW."Created" = CURRENT_TIMESTAMP;
  IF (NEW."Modified" IS NULL) THEN NEW."Modified" = CURRENT_TIMESTAMP;
  IF (NEW."CreatedBy" IS NULL) THEN NEW."CreatedBy" = 0;
  IF (NEW."ModifiedBy" IS NULL) THEN NEW."ModifiedBy" = 0;
END ^

/* Trigger für Aktualisierung von Modified und ModifiedBy */
CREATE OR ALTER TRIGGER TR_TA_TimeTableList_Modified_BU FOR TA_TimeTableList ACTIVE BEFORE UPDATE
AS BEGIN
  NEW."Modified" = CURRENT_TIMESTAMP;
  NEW."ModifiedBy" = 0;
END ^
SET TERM ;^
Das funktioniert auch prinzipiell. Aber wenn ich nun in einem TDBGrid, das an einem TFDQuery/TDataSource hängt (was an einem TFDConnection hängt), einen Datensatz ändere, zum nächsten springe, dann wird im Grid die Änderung des "Modified" nicht sofort angezeigt, erst wenn man z. B. die Abfrage erneuert. Auf den zweiten Blick ist mir das sogar klar, das das so ist. Aber erwartet hatte ich was anderes, nämlich das im Grid sofort die Änderung zu sehen ist, wenn man was geändert hat und zu einem anderen Datensatz springt.

Wo und wie ist hier der Hebel anzusetzen, dass durch Trigger veränderte Werte in einem Grid angezeigt werden?

TIA, Markus
  Mit Zitat antworten Zitat