Aggiunta, modifica o eliminazione di dati con AL

Completato

Agli sviluppatori viene spesso chiesto di modificare i dati nel database tramite codice AL.

Le istruzioni seguenti consentono di modificare i dati:

  • Insert

  • Modify e ModifyAll

  • Delete e DeleteAll

Istruzione Insert

L'istruzione Insert consente di aggiungere nuovi record al database. Prima di inserire i dati, è necessario impostare i valori per ogni campo da archiviare. Come i comandi di modifica ed eliminazione, il comando Insert accetta il parametro booleano RunTrigger. Per impostazione predefinita, il valore del parametro è false.

Se il parametro è false, il comando Insert non esegue il trigger OnInsert a livello di tabella. Impostare il valore su true se si desidera eseguire il trigger OnInsert. L'azione è inclusa per motivi di prestazioni.

Questo processo è coerente con l'assegnazione di un valore a un campo perché, in modo analogo, non esegue il trigger OnValidate sul campo.

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

Sebbene il trigger OnInsert non venga eseguito per impostazione predefinita, gli eventi OnBeforeInsert o OnAfterInsert sono sempre eseguiti.

Istruzioni Modify e ModifyAll

Per modificare i valori di un record esistente, è necessario prima recuperare il record. Successivamente, è possibile aggiornare i valori e usare la funzione Modify per archiviare le modifiche nel database.

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

In modo analogo alla funzione Insert, è necessario fornire un valore true alla funzione Modify per eseguire il trigger OnModify a livello di tabella.

Se si desidera aggiornare più record contemporaneamente, è possibile usare la funzione ModifyAll. La funzione ModifyAll accetta il parametro RunTrigger come terzo parametro della funzione.

ModifyAll(Field, NewValue, [RunTrigger]

Nell'esempio seguente tutti i record in cui il campo Salesperson Code è uguale a (PS) vengono recuperati per primi, quindi tutti i record recuperati vengono aggiornati con il valore (JR).

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

Le funzioni Modify e ModifyAll non chiedono conferma e la modifica viene eseguita senza alcun avviso.

Istruzioni Delete e DeleteAll

In modo analogo alla funzione Modify, prima di eliminare un record è necessario recuperarlo dal database. Le funzioni Delete e DeleteAll accettano il parametro RunTrigger.

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

La funzione DeleteAll rimuove più record contemporaneamente.

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

Le funzioni Delete e DeleteAll non chiedono conferma e l'eliminazione viene completata senza alcun avviso.