Aggiunta, modifica o eliminazione di dati con AL
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.