web
You’re offline. This is a read only version of the page.
close
Skip to main content
Community site session details

Community site session details

Session Id :
Dynamics 365 Community / Blogs / Bodo's Dynamics NAV Blog / Dynamics NAV Web Services u...

Dynamics NAV Web Services und die Reihenfolge der Ereignistrigger

Community Member Profile Picture Community Member

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.

Comments

*This post is locked for comments