Bodo's Dynamics NAV Blog

Bodo ist ein Dynamics NAV Urgestein. Er programmiert NAV seit DOS Zeiten und hat auch keine Scheu vor .NET und schon gar nicht vor Dynamics 365 oder Azure. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu NAV Entwicklern ausgebildet.

In diesem Blog veröffentlichen Bodo und andere Superhelden Interessantes aus der Welt von Dynamics NAV, Dynamics 365 und Azure.

Dynamics NAV Web Services und die Reihenfolge der Ereignistrigger

Verfasst von Bodo am Montag, 13. Februar 2012

Tags: webservices, trigger, reihenfolge

Annahme: Wir haben einen Web Service auf Basis eine Page (Property PageType=List, Editable=Yes) veröffentlicht.

Quizfrage: In welcher Reihenfolge werden beim Aufruf einer Web Service Methode die Ereignistrigger der Page und der zugrundeliegende Datenbanktabelle ausgelöst?

Web Service - Create

Nr.

Objekt

Ereignis

Hinweis

1

Page

OnInit

Falls Sie versuchen sollten, in diesem Ereignistrigger in die Datenbank zu schreiben, bekommen Sie die Fehlermeldung „Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde.“

2

Page

OnOpenPage

 

Impliziter Start der Datenbanktransaktion

3

Page

OnNewRecord

 

4

Table

<Column Name> - OnValidate

Auf dem Table-Objekte wird das OnValidate-Ereignis der Primärschlüsselspalte ausgelöst.

5

Page

<Column Name> - OnValidate

Auf dem Page-Objekt wird das OnValidate-Ereignis der Primärschlüsselspalte ausgelöst.

6

Page

OnInsertRecord

 

7

Table

OnInsert

 

8

Table

<Column Name> - OnValidate

Gem. der Reihenfolge der Spalten auf dem Page-Objekt werden die OnValidate-Ereignisse aller Spalten ausgelöst, deren Werte Sie gesetzt haben. Jeweils zunächst das OnValidate-Ereignis des Table-Objekts und anschließend des Page-Objekts.

9

Page

<Column Name> - OnValidate

Siehe oben.

10

Page

OnModifyRecord

 

11

Table

OnModify

 

Implizites COMMIT der Datenbanktransaktion

12

Page

OnAfterGetRecord

Falls Sie versuchen sollten, in diesem Ereignistrigger in die Datenbank zu schreiben, bekommen Sie die Fehlermeldung „Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde.“

 

Web Service - Update

Nr.

Objekt

Trigger

Hinweis

1

Page

OnInit

Falls Sie versuchen sollten, in diesem Ereignistrigger in die Datenbank zu schreiben, bekommen Sie die Fehlermeldung „Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde.“

2

Page

OnOpenPage

 

Impliziter Start der Datenbanktransaktion

3

Page

OnAfterGetRecord

Falls Sie versuchen sollten, in diesem Ereignistrigger in die Datenbank zu schreiben, bekommen Sie die Fehlermeldung „Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde.“

4

Table

<Column Name> - OnValidate

Gem. der Reihenfolge der Spalten auf dem Page-Objekt werden die OnValidate-Ereignisse aller Spalten ausgelöst, deren Werte Sie geändert haben. Jeweils zunächst das OnValidate-Ereignis des Table-Objekts und anschließend des Page-Objekts.

5

Page

<Column Name> - OnValidate

Siehe oben.

6

Page

OnModifyRecord

 

7

Table

OnModify

 

Implizites COMMIT der Datenbanktransaktion

8

Page

OnAfterGetRecord

Falls Sie versuchen sollten, in diesem Ereignistrigger in die Datenbank zu schreiben, bekommen Sie die Fehlermeldung „Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde.“

 

Web Service - Delete

Nr.

Objekt

Trigger

Hinweis

1

Page

OnInit

Falls Sie versuchen sollten, in diesem Ereignistrigger in die Datenbank zu schreiben, bekommen Sie die Fehlermeldung „Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde.“

2

Page

OnOpenPage

 

Impliziter Start der Datenbanktransaktion

3

Page

OnAfterGetRecord

Falls Sie versuchen sollten, in diesem Ereignistrigger in die Datenbank zu schreiben, bekommen Sie die Fehlermeldung „Sie können keine Änderungen an der Datenbank vornehmen, ehe eine Transaktion gestartet wurde.“

4

Page

OnDeleteRecord

 

5

Table

OnDelete

 

Implizites COMMIT der Datenbanktransaktion

Schlussbemerkung: Der Test basiert auf der Version 2009 R2, Build 32441.

Bemerkenswert ist

  1. dass im Fall der Create()-Methode eine Kombination aus Rec.INSERT() und Rec.MODIFY() durchlaufen wird und
  2. dass in keinem Fall das OnClosePage-Ereignis ausgelöst wird.

Kontakt

Comporsys Hansa GmbH
Spitzerdorfstr. 3
22880 Wedel, Deutschland

Tel. +49 (0)4103 12117 - 0
Fax +49 (0)4103 12117 - 29
E-Mail: info@comporsys.de