AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten
Thema durchsuchen
Ansicht
Themen-Optionen

Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

Ein Thema von AuronTLG · begonnen am 18. Jun 2019 · letzter Beitrag vom 19. Jun 2019
Antwort Antwort
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
291 Beiträge
 
Delphi 12 Athens
 
#1

Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 18. Jun 2019, 17:19
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDAC
Moin,

ich würde gerne für eine bestimmte Tabelle ein Änderungsprotokoll führen, d.h. für jedes Feld, dass beim Posten einen neuen Wert enthält, soll es einen entsprechenden lesbaren Eintrag in besagtem Protokoll geben.
Im Prinzip soll, nachdem auf einem Formular mit datenbanksensitiven Komponenten & DBNavigator, die über TFDTable/Query an der besagten Tabelle hängen, gepostet wird, eine Liste mit den Änderungen angelegt werden, die dann lesbar protokolliert werden können:

D.h. "XYZ klickt auf in einer Maske auf eine datenbanksensitive Checkbox und speichert" -> "XYZ hat ABC ein/ausgeschaltet" im Protokoll.
Oder "XYZ ändert Wert in DBEditSoundso von ABC auf DEF und speichert" -> "XYZ hat Wert Soundso von ABC auf DEF geändert" im Protokoll.

Der Rahmen, in dem dies passiert ist so überschaubar und simpel, dass eine einfache und unkomplizierte Lösung völlig ausreicht, d.h. die Felderanzahl ist überschaubar.
Die Vorschläge, die ich beim Suchen nach dem Thema gefunden habe, sind zumeist entweder veraltet oder zu komplex.

Mir fallen mehrere äußerst unelegante Brute-Force-Lösungen (OnChange, JvMemoryDatas etc) ein, zudem habe ich mir auch schonmal die FDEventAlert-Komponente angeschaut, aber mich würde mal interessieren, ob jemand eine simple Methodik dafür kennt.

Geändert von AuronTLG (18. Jun 2019 um 17:23 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 18. Jun 2019, 17:27
Am Einfachsten über Datenbanktrigger oder der Monitoring-API von FireBird.
Markus Kinzler
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
704 Beiträge
 
Delphi 12 Athens
 
#3

AW: Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 18. Jun 2019, 17:51
Das ist definitiv ein Job für Triggers in der Datenbank selbst (afterupate, afterinsert, afterdelete), sowas auf der Clientseite zu implementieren ist viel zu fehleranfällig und komplex, besonders bei Mehrbenutzersystemen.

Was Du allerdings noch zusätzlich brauchst ist ein Progrämmchen, das aus der von den Triggern erzeugten Audit-Tabelle einen hübschen Report für den Auditor erzeugt.
Peter Below
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 18. Jun 2019, 19:28
Hallo,
auch ich wäre für DB-Trigger.
Ein erster Ansatz wäre hier
https://www.ibexpert.net/ibe/pmwiki....birdReplicated

Zitat:
Die Vorschläge, die ich beim Suchen nach dem Thema gefunden habe, sind zumeist entweder veraltet oder zu komplex.
Welche sind denn zu komplex?
Heiko

Geändert von hoika (18. Jun 2019 um 19:37 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#5

AW: Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 19. Jun 2019, 09:11
Also wenn von "Klicks" die Rede ist, lässt sich das mit DB Triggern nicht abdecken.
Kann FB "onSelect"?

Sobald Formularaktivitäten aufgezeichnet werden müssen, ist man vielleicht eher bei einem Webservice, der einfach alle Änderungen mitschreibt, Logtabelle geht natürlich auch.
Spannend wäre bei einer Clientlösung noch, dass man es ordentlich puffert, ggF. einen Effektivabgleich macht und die Aktionen in Summe erst wirklich protokolliert, wenn auch ein Commit erfolgt ist.
Manchmal ist der Teufel halt ein Eichhörnchen und aus einer "überschaubaren" Sache wird eine komplexe.
Gruß, Jo
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 19. Jun 2019, 09:28
Zitat:
Also wenn von "Klicks" die Rede ist, lässt sich das mit DB Triggern nicht abdecken.
Kann FB "onSelect"?
Ich hatte ihn so verstanden, dass nur Änderungen an den daten protokolliert werden sollen.
Reine Abfragen kann nur über die Monitoring-API protokollieren. GUI-Aktionen natürlich nur in der GUI. Dafür gibt es aber ja asuch schon Lösungen (Analytics).
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.355 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 19. Jun 2019, 09:46
Grundsätzlich würde ich sowas über DB-Trigger lösen.
Wenn es aber in Delphi gelöst werden muss (aus welchem Grund auch immer), kann man im BeforePost NewValue und OldValue des DataSet vergleichen und daraus ein eigenes Protokoll basteln.
Peter
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#8

AW: Einfache Möglichkeit zur Aufzeichnung von Änderungen in Tabelle bei Posten

  Alt 19. Jun 2019, 13:08
Grundsätzlich würde ich sowas über DB-Trigger lösen.
Wenn es aber in Delphi gelöst werden muss (aus welchem Grund auch immer), kann man im BeforePost NewValue und OldValue des DataSet vergleichen und daraus ein eigenes Protokoll basteln.
Falls es beim Ausführen des Datenbank-Updates zu einem Fehler kommt, muss dies noch ins Protokoll (oder die bereits protokollierte Eintragung wieder gelöscht werden).
Michael Justin
habarisoft.com
  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 13:09 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