Autor Beitrag
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.09.03 12:12 
Hi Leute,

hab ein ziemlich umfangreiches Projekt mit vielen TTable-Komponenten. Der Aufraggeber möchte nun eine Protokollfunktion, mit der er immer sehen kann, welcher User eine Änderung durchgeführt hat.

Dafür müsste ich ja vor einem Edit alle Feldwerte einer Tabelle in ein Array einlesen und vor dem Post überprüfen, welche Werte geändert wurden und dann den Wert vorher und Nachher mit Namenskürzel in eine Tabelle wegschreiben.

Ist die Sache mit den Arrays wirklich die effektivste Möglichkeit? Oder gibts da was eleganteres? Auf Datenbankebene ist keine Protokollierung möglich.

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 24.09.03 12:48 
Frag mal deinen Arbeitgeber ob er Geld für ne größere Platte hat :-).
Wenn du wirklich jede Änderung historisieren möchtest, ist das ne Menge Holz sprich Datenvolumen.
Und richtig, wenns die DB nicht hergibt, dann gibts nur eins, alle Änderungen an allen Feldern tracken.

P.S. Solche Aufzeichnungen unterliegen dem Bundesdatenschutzgesetz und dürfen ohne Zustimmung des jeweiligen Benutzers nicht verwendet werden.

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
neojones Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.09.03 15:01 
@MSCH: Plattenplatz sollte kein Problem sein. Die haben im Augenblick schon ein halbes Terabyte von denen nur 30 Gig genutzt werden :-)

Zum Thema Datenschutz: Ein Änderungsprotokoll ist zulässig. Es darf nur nicht so aufgebaut werden, dass sich daraus Rückschlüsse über das Arbeitsverhalten ziehen lassen. Will heißen: Ich darf nicht erfassen, wie lange er für das Eintragen der Daten gebraucht hat.

Konkret is meine Frage halt: Gibt es eine elegantere Lösung als das mit 2 Arrays zu machen und die immer zu vergleichen?

_________________
Ha! Es compiliert! Wir können ausliefern!
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 24.09.03 16:13 
elegante Methode:
Jedes TField hat eine Eigenschaft Modified, die zeigt an, ob die Daten verändert wurden.
Nun erstelle man eine Tabelle in der alle Änderungen protokolliert werden.
z.b.
<table><fieldname><user><modified><moddate>

Dann gibts eine Methode der TTable BeforePost. In der schreibst etwas Code wie:
wenn feld<name>.modified dann Protokolltable.add
dann posten wir erst die Änderung und dann den Rest.

Sofern du dich mit Triggern auskennst kannst du das ganze auch auf der DB machen, sofern die sowas kennt. Ist halt etwas sql notwendig.

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
neojones Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Mi 24.09.03 18:18 
Naja, mit SQL hab ich weniger Probleme. Aber der Kunde nutzt mySQL ;-)

Aber die Sache mit den Modifieds klingt gut. Werde das mal probieren.

_________________
Ha! Es compiliert! Wir können ausliefern!
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mi 24.09.03 19:02 
was denn, mySQL kennt keine Trigger? OOOOH GOOOOD, hau wech die sch..e. Überzeug den Kunden das MS-SQL viel viel better is. :-)

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
neojones Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Do 25.09.03 09:44 
@MSCH: Werd ich ganz sicher nicht tun. Ich hab MS-SQL bei 2 Kunden laufen: Katastrophe. Ich hab mySQL bei 7 Kunden laufen, ohne Probleme.

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Do 25.09.03 10:25 
wir gleiten zwar vom Thema ab, aber wieso Katastrophe? Ich hab uff Arbeet nur solche Teile am Laufen und noch nie probleme gehabt. verry simple einrichtung, verry simple Datensicherung, verry simple Mailbenachrichtigung. nix Problems.
grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
neojones Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Do 25.09.03 15:42 
Das geht schon, wenn Du für die Server zuständig bist. Aber das sind Kunden...

Und weils ja Windows is is es gaaaaanz einfach, da schnell mal selbst was zu ändern ...

Und bei ner mySQL auf Linux-Basis traut sich das Gott sei Dank keiner.

_________________
Ha! Es compiliert! Wir können ausliefern!
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Do 25.09.03 16:24 
achso. naja, dann hilft nur ein gutes Kennwort. Aber aus geschäftlicher Sicht doch ok, Kunde hat ja selbst eingegriffen. Also hat er gegen den Supportvertrag verstossen. Also muß er Kohle rausrücken, damits wieder läuft. Ist doch ein Einträgliches Geschäft.
hmmm, muss ich mir mal überlegen. Kann man bestimmt von leben. :-)

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?