seltsames Verhalten in CU 423

Bild Microsoft Dynamics NAV 4.xx
(ehem. Microsoft Business Solutions-Navision)

seltsames Verhalten in CU 423

Beitragvon redStripe » 14. Dezember 2005 16:06

Beim einfĂĽgen eines Ă„nderungsprotokollposten (Tabelle 405) wird in der CU
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.
redStripe
Microsoft Partner
Microsoft Partner
 
Beiträge: 34
Registriert: 28. September 2005 10:52

Beitragvon Timo Lässer » 15. Dezember 2005 11:04

Da zwischenzeitlich auf mibuso.com die Antwort gegeben wurde, übersetze ich diese hier mal sinngemäß:
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: Alles auswählen
  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: Alles auswählen
  MESSAGE(Text000,Check_value_rec.ValidString);
  ERROR('');
Gruß, Timo Lässer

Frage beantwortet? Schreibe bitte "[Gelöst]" vor den Titel deines ersten Beitrags.
Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, E-Mail, Instant Messanger, Soziale Netzwerke, Telefon oder Fax! DafĂĽr ist dieses Forum da.
Hier kannst du fĂĽr MSDynamics.de spenden.
Benutzeravatar
Timo Lässer
Administrator
Administrator
 
Beiträge: 5274
Registriert: 14. November 2004 22:18
Wohnort: DE 49716 Meppen
Arbeitsort: DE 49733 Haren (Ems)
Bezug zu Microsoft Dynamics: End-Anwender
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 1.10a - 2018, BC14, BC21

Beitragvon redStripe » 16. Dezember 2005 11:37

danke fĂĽr die Ăśbersetzung ;-)
redStripe
Microsoft Partner
Microsoft Partner
 
Beiträge: 34
Registriert: 28. September 2005 10:52


ZurĂĽck zu NAV 4.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast