31. März 2006 12:16
31. März 2006 12:29
COMMIT;
AdressLog.SETRANGE(Nummer, Adresse.Nummer);
IF AdressLog.FIND('+') THEN NeueLaufNr := AdressLog."Laufnr." + 10000
ELSE NeueLaufNr := 10000;
CLEAR(AdressLog);
AdressLog.Nummer := Adresse.Nummer;
AdressLog."Laufnr." := NeueLaufNr;
AdressLog.INSERT;
AdressLog.TRANSFERFIELDS(Adresse, FALSE);
AdressLog.Datum := TODAY;
AdressLog.Zeit := TIME;
AdressLog.Benutzer := USERID;
AdressLog.MODIFY;
31. März 2006 12:59
rotsch hat geschrieben:Der einzig mögliche war ein Funktionsaufruf im OnModify-Trigger der betroffenen Tabelle für ein Logging. Dabei wird aber immer der gesamte Record weggeschrieben, so in der Art:
31. März 2006 13:09
IF Rec.Feldname <> xRec.Feldname THEN
loggen...
31. März 2006 13:18
31. März 2006 13:28
LogModification(VAR RecRef : RecordRef;VAR xRecRef : RecordRef)
IF NOT IsLogActive(RecRef.NUMBER,0,1) THEN
EXIT;
FOR i := 1 TO RecRef.FIELDCOUNT DO BEGIN
FldRef := RecRef.FIELDINDEX(i);
xFldRef := xRecRef.FIELDINDEX(i);
IF IsNormalField(RecRef.NUMBER,FldRef.NUMBER) THEN
IF FORMAT(FldRef.VALUE) <> FORMAT(xFldRef.VALUE) THEN
IF IsLogActive(RecRef.NUMBER,FldRef.NUMBER,1) THEN
InsertLogEntry(FldRef,xFldRef,RecRef,1);
END;
31. März 2006 17:47
1. April 2006 10:03