Daten mit AL hinzufügen, ändern oder löschen

Abgeschlossen

Häufig werden Entwickler aufgefordert, Daten in der Datenbank mithilfe von AL-Code zu ändern.

Die folgenden Anweisungen ermöglichen die Änderung von Daten:

  • „Insert“

  • „Modify“ und „ModifyAll“

  • „Delete“ und „DeleteAll“

Insert-Anweisung

Die Insert-Anweisung wird verwendet, um der Datenbank neue Datensätze hinzuzufügen. Bevor Sie Daten einfügen können, müssen Sie die Werte für jedes Feld festlegen, das Sie speichern möchten. Der Befehl Insert, zusätzlich zu den Befehlen zum Ändern und Löschen, akzeptiert den Booleschen Parameter RunTrigger. Standardmäßig ist der Parameterwert false.

Wenn der Parameter false ist, führt der Befehl Insert nicht den Trigger OnInsert auf Tabellenebene aus. Sie müssen den Wert auf true einstellen, wenn der Trigger OnInsert ausgeführt werden soll. Diese Aktion wird aus Leistungsgründen eingeschlossen.

Dieser Prozess steht im Einklang mit der Zuweisung eines Werts zu einem Feld, da ebenfalls der Trigger OnValidate im Feld nicht ausgeführt wird.

var
    customer: Record Customer;
begin
    customer.Init();
    customer."No." := '4711';
    customer.Name := 'John Doe';
    customer.Insert(true);

Obwohl der Trigger OnInsert nicht standardmäßig ausgeführt wird, werden die Ereignisse OnBeforeInsert oder OnAfterInsert nicht immer ausgeführt.

„Modify“ und „ModifyAll“-Anweisungen

Um die Werte eines vorhandenen Datensatzes zu ändern, müssen Sie zuerst den Datensatz abrufen. Anschließend können Sie die Werte aktualisieren und die Funktion Modify zum Speichern der Änderungen in der Datenbank verwenden.

customer.Get('4711');
customer.Name := 'Richard Roe';
customer.Modify();

Ähnlich wie die Funktion Insert müssen Sie einen Wert true für die Funktion Modify zum Ausführen der Trigger OnModify auf Tabellenebene bereitstellen.

Wenn Sie mehrere Datensätze gleichzeitig aktualisieren möchten, können Sie die Funktion ModifyAll verwenden. Die Funktion ModifyAll akzeptiert den Parameter RunTrigger als dritten Parameter der Funktion.

ModifyAll(Field, NewValue, [RunTrigger]

Im folgenden Beispiel sind alle Datensätze, in denen das Feld Verkäufercode (PS) entspricht, werden zuerst abgerufen, und dann werden alle abgerufenen Datensätze mit dem Wert (JR) aktualisiert.

customer.SetRange("Salesperson Code", 'PS');
customer.ModifyAll("Salesperson Code", 'JR');

Die Funktionen Modify und ModifyAll fragen Sie nicht nach Bestätigung. Die Änderung wird ohne Vorwarnung ausgeführt.

„Delete“‑ und „DeleteAll“-Anweisungen

Wie bei der Funktion Modify müssen Sie einen Datensatz aus der Datenbank abrufen, bevor Sie einen Datensatz löschen können. Die Funktionen Delete und DeleteAll akzeptieren den Parameter RunTrigger.

customer.Get('4711');
customer.Delete(true);

Die Funktion DeleteAll entfernt mehrere Datensätze gleichzeitig.

customer.SetRange("Salesperson Code", 'PS');
customer.DeleteAll();

Die Funktionen Delete und DeleteAll fragen Sie nicht nach Bestätigung. Die Löschung wird ohne Vorwarnung ausgeführt.