Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   DB-Memofeld wer hats wann geändert (https://www.delphipraxis.net/188285-db-memofeld-wer-hats-wann-geaendert.html)

baumina 16. Feb 2016 15:07

DB-Memofeld wer hats wann geändert
 
Ich habe im Moment in meiner DB-Anwendung ein Memofeld, in dem jeder Benutzer Hinweise zu einer Baugruppe hinzufügen, ändern oder löschen darf. Nun kommt die Frage auf, wenn ein Benutzer weder sein Kürzel noch ein Datum dazuschreibt, weiß keiner mehr wer das wann eingetragen hat. Und wie es eben so nach ein paar Monaten ist, es will keiner gewesen sein.

Nun fragt mich mein Chef nach einer einfachen, schnellen Lösung um sehen zu können wer wann was in das Memofeld eingefügt/geändert oder gelöscht hat. Meiner DB-Anwendung ist der eingeloggte Benutzer bekannt. Aber wie es halt bei einem Memofeld so ist, es wird mal hier und da von einem Report gedruckt oder einer Maske angezeigt.

Mir fällt leider nichts "einfaches schnelles sinnvolles" dazu ein, euch vielleicht?

Lemmy 16. Feb 2016 15:09

AW: DB-Memofeld wer hats wann geändert
 
was für eine Datenbank? Wenn die Trigger unterstützt, kannst Du in einem BeforeUpdate Trigger eine Logtabelle schreiben, wenn sich der neue Inhalt vom alten Inhalt unterscheidet,

Grüße

jobo 16. Feb 2016 15:10

AW: DB-Memofeld wer hats wann geändert
 
Meist kennt die DB aus der Situzung den Usernamen (und die Zeit sowieso).
Damit kann man per insert/ update trigger die Daten stempeln, am besten in separaten Feldern, die der User nicht ändern kann.
Ansonsten den Stempel in das Memo eintragen und bewachen, das der Inhalt vor Änderung erhalten bleibt, also nur Ergänzungen möglich sind.

Aviator 16. Feb 2016 15:12

AW: DB-Memofeld wer hats wann geändert
 
Zitat:

Zitat von jobo (Beitrag 1330544)
Ansonsten den Stempel in das Memo eintragen und bewachen, das der Inhalt vor Änderung erhalten bleibt, also nur Ergänzungen möglich sind.

Ein ähnliches Problem haben wir bei uns auch mit einer ganz eigenen Software. Daten sollen nicht gelöscht sondern nur neue hinzugefügt werden können. Aber was passiert wenn sich der Benutzer mal verschreibt und etwas korrigieren muss? :gruebel:

jobo 16. Feb 2016 15:16

AW: DB-Memofeld wer hats wann geändert
 
Naja, ist halt die Frage ob es einfach und schnell umgesetzt werden soll oder etwas programmieraufwand drin stecken darf.
Die einfache Lösung ist schlicht, auch die Korrekturen stumpf zu ergänzen. Clientseitig: Ein freies Memo, das den neuen Inhalt aufnimmt, vorm Post dann ans DB Memo plus UserZeitStempel dran hängt (oder an den Anfang).
Komplexere Dinge müsste man mit Änderungshistorie umsetzen, notfalls plus separate Felder alter Wert / neuer Wert.

baumina 16. Feb 2016 15:18

AW: DB-Memofeld wer hats wann geändert
 
Ja und wenn das Memo mal so lange geworden ist, dass der Ausdruck 3 Seiten Memo ausspuckt von Baugruppenänderungen, die 2003 mal gemacht wurden und wirklich niemanden mehr interessieren.

p80286 16. Feb 2016 15:21

AW: DB-Memofeld wer hats wann geändert
 
Ein "Update/Insert"-Trigger + LastEditor + LastEditDate ?

irgendwie den roten Kasten übersehen?

Gruß
K-H

baumina 16. Feb 2016 15:22

AW: DB-Memofeld wer hats wann geändert
 
Was mir dank euch gerade so in den Sinn gekommen ist, ich könnte ja bei Modified des Memofeldes einfach den Benutzernamen und das Datum hinten ins Memo reinknallen.

p80286 16. Feb 2016 15:25

AW: DB-Memofeld wer hats wann geändert
 
Grauslich aber sollte ja Quickndirty sein

Gruß
K-H

Der schöne Günther 16. Feb 2016 15:25

AW: DB-Memofeld wer hats wann geändert
 
Oh, das hört sich ja exakt so an wie etwas das bei mir schon seit Monaten auf dem Tisch liegt. Die Motivation ist hier auch einmal feststellen zu können wer es war, aber noch viel eher dass die Daten nicht weg kommen können. Nicht dass ein Memo nur immer länger werden darf, sondern dass die alten Daten nicht weg sind.

Grade das wäre doch bei deinem "Memo-Suffix" nicht mehr gegeben, oder?

Meine Husch-Husch-Lösung wäre sich in ein "BevorNeueDatenAbgeschicktWerden"-Event einzuklinken und den aktuellen Datensatz (als dumme Textdatei) irgendwo zentral abzulegen. Die kann ja noch den eingeloggten Benutzer enthalten, Uhrzeit und aktuelles Wetter. So muss sich die Datenbank-Struktur nicht ändern und man kann im Notfall alte Daten wieder herstellen, den Schuldigen finden und wenn einem der Speicher ausgeht alle redundanten Kopien älter als X Jahre löschen. Lohnt sich natürlich nur wenn so etwas nicht zum Standardfall wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.
Seite 1 von 3  1 23      

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