423 Change Log Mng. im Trigger InsertLogEntry eine Funktion ausgefĂĽhrt,
die den Wert des Feldes "NewValue" prĂĽft.
Diese PrĂĽfung soll bei jedem Insert ausgefĂĽhrt werden - dies erfolgt aber
leider immer versetzt. D.h. nach Neustart von Navision und dem Durchlauf der Prüfungsroutine geschieht zunächst nichts, aber beim zweiten Druchlauf wird auf den vorherigen Wert geprüft.
In in diesem InsertLogEntry Trigger werden vorher Filter auf TabelNo und TableName gesetzt.
Kann sich jemand dieses Verhalten erklären?
Hier der Code:
- Code: Alles auswählen
InsertLogEntry(VAR FldRef : FieldRef;VAR xFldRef : FieldRef;VAR RecRef : RecordRef;TypeOfChange : 'Insertion,Modification,Deletion')
ChangeLogEntry.INIT;
ChangeLogEntry."Date and Time" := ROUNDDATETIME(CURRENTDATETIME,1000);
ChangeLogEntry.Time := DT2TIME(ChangeLogEntry."Date and Time");
ChangeLogEntry."User ID" := USERID;
ChangeLogEntry."Table No." := RecRef.NUMBER;
ChangeLogEntry."Field No." := FldRef.NUMBER;
ChangeLogEntry."Type of Change" := TypeOfChange;
IF (RecRef.NUMBER = DATABASE::User) AND (FldRef.NUMBER = 2) THEN BEGIN // Password
ChangeLogEntry."Old Value" := '*';
ChangeLogEntry."New Value" := '*';
END ELSE BEGIN
IF TypeOfChange <> TypeOfChange::Insertion THEN
ChangeLogEntry."Old Value" := FormatValue(xFldRef,RecRef.NUMBER);
IF TypeOfChange <> TypeOfChange::Deletion THEN
ChangeLogEntry."New Value" := FormatValue(FldRef,RecRef.NUMBER);
END;
//bsw1000+
CLEAR(Check_value_rec);
Check_value_rec.SETRANGE(Check_value_rec."Table No.",ChangeLogEntry."Table No.");
Check_value_rec.SETRANGE(Check_value_rec."Field No.",ChangeLogEntry."Field No.");
IF Check_value_rec.FIND('-') THEN BEGIN
ChangeLogEntry.PrĂĽfwert := Check_value_rec.ValidString;
MESSAGE('PrĂĽfwert %1',ChangeLogEntry.PrĂĽfwert);
IF ChangeLogEntry.PrĂĽfwert <> ChangeLogEntry."New Value" THEN
ERROR(Text000,Check_value_rec.ValidString);
END;
//bsw1000-
Danke schonmal.
redStripe.