[Gelöst] - Event wird fälschlich durchlaufen

2. August 2018 16:41

In Report 5198 'Add Contacts' ist folgender Code drin:

Code:
TempCont := CheckedCont;
IF TempCont.INSERT THEN;


INSERT also ohne (TRUE)

Wenn nun aber ein Event auf OnBeforeInsert vom Kontakt erstellt wird, durchläuft das System diesen, obwohl ja INSERT ohne Auslösung des Triggers aufgerufen wird. Aus meiner Sicht ist das ein Fehler. Oder liege ich falsch? Wie könnte man das umgehen?

Besten Dank für eure Tipps :-D
Zuletzt geändert von rotsch am 2. August 2018 16:48, insgesamt 1-mal geändert.

Re: Event wird fälschlich durchlaufen

2. August 2018 16:45

Hallo,

die Envents interessiert es nicht, ob du mit oder ohne Trigger aufgerufen hast. Das musst du im Subscriber anhand der Variable RunTrigger prüfen.

Gruß Fiddi

Re: Event wird fälschlich durchlaufen

2. August 2018 16:47

Ach, wenn alles so einfach wäre :-D

Besten Dank für die rasche Anwort.

Re: [Gelöst] - Event wird fälschlich durchlaufen

3. August 2018 09:33

Nur als Hinweis, temporary ist meiner Meinung nach auch noch eine sinnvolle Ergänzung.

Code:
LOCAL [EventSubscriber] Contact_OnBeforeInsert(VAR Rec : Record Contact;RunTrigger : Boolean)
IF NOT Rec.ISTEMPORARY AND RunTrigger THEN BEGIN
  //Some Code
END;

Re: [Gelöst] - Event wird fälschlich durchlaufen

3. August 2018 09:55

Nody3000 hat geschrieben:Nur als Hinweis ...


Guter Hinweis, besten Dank!

Re: [Gelöst] - Event wird fälschlich durchlaufen

3. August 2018 10:43

Und wenn wir schon dabei sind mit den Hinweisen:

Ob du andere Datensätze lesen,ändern oder modifizieren darfst, musst du auch prüfen falls du das vorhast. z.B. ist es keine gute Idee in einem Event der SalesLine den Salesheader zu lesen und ggf. auch noch zu ändern, wenn man nicht genau weiß das man das darf. :mrgreen:

Der Salesheader einer SalesLine kann mit SalesLine.SetSalesHeader gesetzt sein. Dieser SalesHeader kann Temporär sein, muss er aber nicht (Assemply, CU80) und er hat mit dem Record in der Datenbank nicht unbedingt etwas zu tun. Außerdem kann eine Änderung am SalesHeader während der Auftragserfassung dazu führen, dass der Header auf der Auftragspage nicht mehr aktuell ist.

Gruß Fiddi