[gelöst] Für jeden Error eine Message ausgeben

Bild Microsoft Dynamics NAV 5.xx

[gelöst] Für jeden Error eine Message ausgeben

Beitragvon mpetersen » 21. Dezember 2012 16:47

HI,

ich hab folgendes Problem:

Ich habe in einem Trigger eine Programmierung gemacht, die einen Lagerplatz in mehreren Tabellen per VALIDATE ändern soll. Sollte es dabei einen Error geben, soll die Verarbeitung aber nicht abbrechen, sondern es soll eine MESSAGE ausgegeben werden und zwar jedes Mal, wenn ein Error auftritt.
Meine Programmierung sieht wie folgt aus:

OnValidate wird folgendes ausgefĂĽhrt:
Code: Alles auswählen
IF (xRec.Default <> Default) AND Default THEN BEGIN
  ChangeBinCode("Item No.","Variant Code","Location Code","Bin Code");
END;


Danach folgt die Funktion ChangeBinCode:

Code: Alles auswählen
SalesLine.RESET;
SalesLine.SETRANGE(Type,SalesLine.Type::Item);
SalesLine.SETRANGE("No.",ItemNo);
SalesLine.SETRANGE("Variant Code",Variant);
SalesLine.SETFILTER("Location Code",'%1|''''',Location);
IF SalesLine.FINDFIRST THEN BEGIN
  REPEAT
    ChangeBin.SetSalesLine(SalesLine);
    IF NOT ChangeBin.RUN THEN
      MESSAGE(Text50000,SalesLine."Document Type",SalesLine."Document No.",SalesLine."Line No.");
  UNTIL SalesLine.NEXT = 0;
END;

PurchLine.RESET;
PurchLine.SETRANGE(Type,PurchLine.Type::Item);
PurchLine.SETRANGE("No.",ItemNo);
PurchLine.SETRANGE("Variant Code",Variant);
PurchLine.SETFILTER("Location Code",'%1|''''',Location);
IF PurchLine.FINDFIRST THEN BEGIN
  REPEAT
    ChangeBin.SetPurchLine(PurchLine);
    IF NOT ChangeBin.RUN THEN
      MESSAGE(Text50000,PurchLine."Document Type",PurchLine."Document No.",PurchLine."Line No.");
  UNTIL PurchLine.NEXT = 0;
END;


Als Beispiel mal die Verarbeitung, wenn sie über Sales Line und Purchase Line läuft.

Das Problem ist aber, sobald er auf mehrere Errors stößt, bekomme ich trotzdem immer nur eine Message angezeigt, obwohl ich mehrere haben wollte.

Hat jemand eine Idee, was ich machen muss?
Zuletzt geändert von mpetersen am 28. Dezember 2012 09:06, insgesamt 2-mal geändert.
mpetersen
Microsoft Partner
Microsoft Partner
 
Beiträge: 7
Registriert: 25. März 2009 12:28
Realer Name: Malte Petersen
Arbeitsort: Kiel
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: FĂĽr jeden Error eine Message ausgeben

Beitragvon Natalie » 21. Dezember 2012 17:03

Ich bin mir nicht 100%ig sicher, was genau nun das Phänomen auslöst, aber zwei Dinge würde ich in jedem Fall machen:

1) nach jedem REPEAT zunächst die Codeunit intialisieren: CLEAR(ChangeBin)
2) Ersetze MESSAGE durch CONFIRM. Nur dann wird die Meldung ausgegeben, sobald sie auftritt. MESSAGE wartet ab, bis die gesamte Transaktion vorbei ist und holt dann quasi nach.
GruĂź, Natalie

Frage beantwortet oder Problem von allein gelöst? Schreibe bitte [Gelöst] vor den Titel des ersten Beitrags.

Bitte erst suchen, dann fragen. Bitte beachte den kleinen Community-Knigge.
Kein Support per PN, Mail, IM oder Telefon! DafĂĽr ist dieses Forum da.
Benutzeravatar
Natalie
Moderator
Moderator
 
Beiträge: 9257
Registriert: 31. Oktober 2006 19:51
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV

Re: FĂĽr jeden Error eine Message ausgeben

Beitragvon mpetersen » 28. Dezember 2012 09:06

Hi,

danke fĂĽr deine Antwort, hat jedoch beides nicht geholfen.
Hab jetzt einen anderen Weg gewählt, und zwar anstatt jedes mal eine Message auszugeben, schreibe ich die Informationen in eine temporäre Tabelle weg und lasse nach meiner Verarbeitung ein Repeat until über diese laufen und lass da für jeden Datensatz eine Message ausgeben.
So funktionierte es.
mpetersen
Microsoft Partner
Microsoft Partner
 
Beiträge: 7
Registriert: 25. März 2009 12:28
Realer Name: Malte Petersen
Arbeitsort: Kiel
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV


ZurĂĽck zu NAV 5.xx

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast