[AX 2012 R3 – How To] Utilizar el objeto RecordInsertList

[AX 2012 R3 – How To] Utilizar el objeto RecordInsertList

La clase RecordInsertList consiste en una lista de elementos (objetos previamente tratados) el cual permite insertar valores de una lista directamente a la base de datos, realizando esta tarea en una sola llamada sin realizar varios viajes.

Generalmente, vamos realizando algún cambio en un registro y ya lo actualizamos en la base de datos. Si son pocos registros, no hay drama. Pero si hablamos de miles de registros la performance se ve afectada. Donde más útil resulta esta clase es en los reportes.

Forma normal


void probarMetodo(RecId _recId, str _algunParametro)
{
TableTemp tabla, nuevaTabla;

while select tabla
where tabla.RecId == _recId
{
nuevaTabla.data(tabla);
nuevaTabla.CampoX = _algunParametro;
//Llama N veces al metodo insertar. Por cada registro inserta en base de datos.
nuevaTabla.insert();
}
}

Utilizando la clase


void probarMetodo(RecId _recId, str _algunParametro)
{
RecordInsertList tempLista;
TableTemp tabla, nuevaTabla;

tempLista = new RecordInsertList(tableNum(TableTemp));

while select tabla
where tabla.RecId == _recId
{
nuevaTabla.data(tabla);
nuevaTabla.CampoX = _algunParametro;
//Agrega el nuevo registro a la lista.
tempLista.add(nuevaTabla);
}
//Inserta toda la lista en la base de datos. Bulk insert.
tempLista.insertDatabase();
}

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.