Agregar, modificar o eliminar datos con AL

Completado

Con frecuencia, se les pedirá a los desarrolladores que modifiquen los datos en la base de datos mediante el código AL.

Las siguientes instrucciones permiten la modificación de datos:

  • Insert

  • Modify y ModifyAll

  • Delete y DeleteAll

Instrucción Insert

La instrucción Insert se utiliza para agregar nuevos registros a la base de datos. Antes de poder insertar datos, debe establecer los valores para cada campo que desea almacenar. El comando Insert, además de los comandos Modify y Delete, acepta el parámetro booleano RunTrigger. De forma predeterminada, el valor del parámetro es false.

Si el parámetro es false, el comando Insert no ejecutará el desencadenador OnInsert en el nivel de tabla. Debe establecer el valor en true si desea que el desencadenador OnInsert se ejecute. Esta acción se incluye por motivos de rendimiento.

Este proceso es coherente con la asignación de un valor a un campo, ya que tampoco ejecuta el desencadenador OnValidate del campo.

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

Aunque el desencadenador OnInsert no se ejecuta de forma predeterminada, los eventos OnBeforeInsert u OnAfterInsert siempre se ejecutan.

Instrucciones Modify y ModifyAll

Para cambiar los valores de un registro existente, primero debe recuperar el registro. Luego, puede actualizar los valores y usar la función Modify para almacenar los cambios en la base de datos.

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

Al igual que con la función Insert, debe proporcionar un valor true a la función Modify a fin de ejecutar el desencadenador OnModify en el nivel de tabla.

Si desea actualizar varios registros simultáneamente, puede usar la función ModifyAll. La función ModifyAll acepta el parámetro RunTrigger como el tercer parámetro de la función.

ModifyAll(Field, NewValue, [RunTrigger]

En el siguiente ejemplo, se recuperan primero todos los registros donde el campo Cód. vendedor equivale a (PS), y luego todos los registros recuperados se actualizan con el valor (JR).

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

Las funciones Modify y ModifyAll no le piden confirmación; la modificación se ejecuta sin previo aviso.

Instrucciones Delete y DeleteAll

Al igual que con la función Modify, necesita recuperar un registro de la base de datos antes de poder eliminar un registro. Las funciones Delete y DeleteAll aceptan el parámetro RunTrigger.

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

La función DeleteAll elimina varios registros de forma simultánea.

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

Las funciones Delete y DeleteAll no le piden confirmación; la eliminación ocurre sin previo aviso.