14. Dezember 2005 16:06
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-
15. Dezember 2005 11:04
kine (übersetzt) hat geschrieben:Dies ist ein bekanntes Problem in allen Navision Versionen, wenn ERROR() aus einem Global Trigger der Codeunit 1 aufgerufen wird. Workaround:
Verwende MESSAGE() um die Fehlermeldung anzuzeigen und anschließend einen leeren ERROR() ...
- Code:
MESSAGE(Text000,Check_value_rec.ValidString);
ERROR('');
kine (Original) hat geschrieben:It is know issue with all versions of Navision that Error called from global triggers in CU1 (ChangeLog management) has this behavior. Workaround:
Use message for showing the error and after that call empty error...
- Code:
MESSAGE(Text000,Check_value_rec.ValidString);
ERROR('');
16. Dezember 2005 11:37